系列文章目录
第一章 javacv配置前言
java OpenCV项目,主要包括人脸检测、眼睛检测、戴眼镜检测,通过比对结果,本文将采用lbp质检器检测人脸提高速度。需要资源请留言。
提示:以下是本篇文章正文内容,下面案例可供参考
一、OpenCV 依赖
1、需要安装OpenCV,或者找免安装的压缩文件,找到opencv_java411.dll这个文件,放到项目中或者配置到环境变量中。
2、下载OpenCV提供的haarshare这个文件,里边包含了各种质检器
二、使用步骤
1.pom
opencv版本需要和dll文件版本一致,为了避免出现其它各种没见过的问题,jar和dll使用了411
<!-- opencv -->
<dependency>
<groupId>org.opencv</groupId>
<artifactId>opencv</artifactId>
<version>4.1.1</version>
</dependency>
代码如下(示例):
人脸检测器使用如下两个:
可以搭配haarcascade_eye_tree_eyeglasses.xml这个使用,主要是检测戴眼镜的情况。
2.加载dll
加载dll时可以考虑在项目启动的时候加载,注意加载的路径,放在项目或者tomcat/bin下边
可以考虑加在项目启动的时候
这儿获取的dll路径我是放到了tomcat/bin下边
System.loadLibrary("opencv_java411");//Windows系统目前存放在bin目录下
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
String url = "E:\\opencv\\datectConsequence\\1m.jpg";
Mat mat = Imgcodecs.imread(url);
将本地资源进行转换成灰度图、直方图然后检测人脸
String facePath = getClass().getResource("/haarshare/lbpcascade_frontalface.xml").getPath().substring(1);
log.info("resourcePath============" + facePath);
//转换图形
mat = doColorHist(mat);
CascadeClassifier faceDetector = new CascadeClassifier(facePath);
MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(mat, faceDetections);
log.info(String.format("Detected %s faces", faceDetections.toArray().length));
faceDetections中包含的Rect对象为检测的耽搁对象,多个通过迭代faceDetections获取结果。
for (Rect rect : faceDetections.toArray()) {
Imgproc.rectangle(mat, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
new Scalar(0, 255, 0));
if(findEyes(mat)){
/*Imgproc.rectangle(mat, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
new Scalar(0, 255, 0));*/
}
}
String filename = "E:\\opencv\\datectConsequence\\" + new Date().getTime() + ".jpg";
Imgcodecs.imwrite(filename, mat);
1、检测人脸
2、检测眼睛
3、检测是否戴眼镜
这三步搭配使用确定是否能确定得到一个完整的人脸,否则在人脸库中检测不到结果或匹配相似值太低,造成资源浪费。
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。
opencv411DLL和jar文件免费下载