java opencv

人气:262 ℃/2023-02-01 13:48:04

在java中的opencv是怎样用的呢?下面就让我们一起来了解一下吧:

opencv是属于一个基于Apache2.0许可(开源)发行的跨平台计算机视觉与机器学习软件库,能够运行在运行在Linux、Windows、Android和Mac OS操作系统上。此外,opencv还具有C ++、Python、Java与MATLAB接口,并且可以支持Windows、Linux、Android与Mac OS,opencv本身主要是倾向于实时视觉应用,并且能在可用时利用MMX和SSE指令。

一般来说,在java中使用opencv需要先安装好,可以在官网中下载opencv,然后在opencv\build\java\及opencv\build\java\x64下提取jar包以及动态库,比如以springboot为例,可以在resources下创建lib/opencv文件夹,并且将这两个包放进去,然后就可以在pom.xml添加依赖,当然也可以选择其他方式添加依赖,不过一定要注意版本最好是要修改成opencv的版本才可。

参考范例:

创建一个springboot项目,然后在测试类中编写代码,即读取图像及灰度化,具体代码为:

package testopencv.demo;

import org.junit.jupiter.api.Test;

import org.junit.runner.RunWith;

import org.opencv.core.CvType;

import org.opencv.core.Mat;

import org.springframework.boot.test.context.SpringBootTest;

import org.springframework.test.context.junit4.SpringRunner;

import java.net.URL;

import static org.opencv.highgui.HighGui.imshow;

import static org.opencv.highgui.HighGui.waitKey;

import static org.opencv.imgcodecs.Imgcodecs.imread;

import static org.opencv.imgcodecs.Imgcodecs.imwrite;

import static org.opencv.imgproc.Imgproc.COLOR_RGB2GRAY;

import static org.opencv.imgproc.Imgproc.cvtColor;

@RunWith(SpringRunner.class)

@SpringBootTest

class DemoApplicationTests {

/**

* @return

* @Description

* @Param

* @Author zhangsan

* @Date 2020.09.05 9:43

**/

@Test

public void testOpencv() throws Exception {

// 解决awt报错问题

System.setProperty("java.awt.headless", "false");

System.out.println(System.getProperty("java.library.path"));

// 加载动态库

URL url = ClassLoader.getSystemResource("lib/opencv/opencv_java440.dll");

System.load(url.getPath());

// 读取图像

Mat image = imread("C:\\Users\\admin\\Pictures\\hello.jpg");

if (image.empty()) {

throw new Exception("image is empty");

}

imshow("Original Image", image);

// 创建输出单通道图像

Mat grayImage = new Mat(image.rows(), image.cols(), CvType.CV_8SC1);

// 进行图像色彩空间转换

cvtColor(image, grayImage, COLOR_RGB2GRAY);

imshow("Processed Image", grayImage);

imwrite("D://hello.jpg", grayImage);

waitKey();

}

}

以上就是小编的分享了,希望能够帮助到大家。

java opencv人脸识别

opencv人脸单目配合型及深度学习活体检测源码android免费分享

必须先转发,后关注,然后私信“人脸检测”即可免费获取源码1. 简介

随着iphoneX的刷脸解锁,支付宝的刷脸支付,刷脸的时代已经到来。在通过人脸识别进行一系列的后续操作中,其中一个关键环节为活体检测。但是目前市场上活体检测算法不够完善,并且开源方面没有很好的实现,我们针对目前用户的需求,开源了一个活体检测的sdk。

我们采用基于人脸landmark的活体配合活体检测。这其中涉及到多个人脸相关的知识,包括:1.人脸检测;2.计算人脸landmark;3.根据landmark的人脸姿态估计;4.人脸表情识别(眨眼,张嘴等);5.合理的配合指令设计。

2. 开发步骤

2.1. 人脸检测

大部分人脸识别中,只针对一张人脸,这里我们优化的mtcnn完成人脸检测。原始的mtcnn算法不够高效,参考mtcnn优化提供的方式,用卷积替代pooling,进一步优化人脸检测的速度。

2.2. 人脸landmark计算

开源的算法已经有很多,包括3000fps,ert,SDM,TCDCN等,但是这些算法在精度、速度上或者模型体积上不能满足我们的需求,我们设计了一个人脸关键点拟合的网络,完成人脸68个关键点的计算。

人脸姿态估计,顾名思义,给定一张人脸图像,确定其姿态,姿态由什么构成呢?很简单(pitch,yaw,roll)三种角度,分别代表上下翻转,左右翻转,平面内旋转的角度。

目前,人脸姿态估计有多种方法,可以分为基于模型的方法,基于表观的方法,基于分类的方法。我之前做过 这方面的调研,调研的结果很明显,基于模型的方法得到的效果最好,因为其得到的人脸姿态是连续的,而另外两种,是离散的,并且很耗时间。基于模型的估计方法的前提是,手头必须具备两样东西,一个是人脸特征点(眼镜,嘴巴,鼻子等处的像素位置),另外一个,是需要自己制作一个3维的,正面的“标准模型”。算法最重要的还是思想,其余诸如流程什么的,都是实现思想的手段而已。人脸姿态估计的思想:旋转三维标准模型一定角度,直到模型上“三维特征点”的“2维投影”,与待测试图像上的特征点(图像上的特征点显然是2维)尽量重合。这时候我们脑海中就应该浮现出一种诡异的场景:在幽暗的灯光中,一个发着淡蓝色光芒的************一点点的“自我调整”,突然一下子“完美无缺”的“扣在了你的脸上”。这就是人脸姿态估计的思想。

2.4. 表情估计

眨眼以及张嘴等,相关研究可参考,我们基于landmark提供的五官位置,训练一个表情分类器,完成表情估计。

2.5. 合理的指令设计

基于我们已经提供的角度、表情的估计算法,我们设计几种合理的配合指令,并且随机下发,进一步防止被视频人脸欺骗。

3.代码

在移动端进行人脸识别应用开发的时候,往往存在用户会使用翻拍照片录像等来欺骗人脸识别系统,因此活体检测是人脸识别和人脸验证中非常重要的一个部分,介于目前开源活体检测代码的较少,但配合型活体检测实现相对比较简单,因此我们对其做了简单的实现, 并开源了所有的代码。

单目配合型活体检测

由于移动端传感器的有限性,在广泛只有单目前置摄像机的情况下,非配合型的人脸活体检测实现相对比较复杂。需要的数据成本也相对较高。而配合性活体检测仅需要通过用户简单的低头摇头操作即可极大降低用户的欺骗攻击成本。

基本设计思路参考

提供了简单的Demo工程 , 需要依赖opencv3.4 和安装NDK。若不想使用OpenCV3.4 和繁琐的编译步骤,提供了编译好的 so 库。必须先转发,后关注,然后私信“人脸检测”即可免费获取源码。

必须先转发,后关注,然后私信“人脸检测”即可免费获取源码

推荐

首页/电脑版/网名
© 2025 NiBaKu.Com All Rights Reserved.