OpenCV人脸识别

系列文章目录

第一章 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>

代码如下(示例):
人脸检测器使用如下两个:
OpenCV人脸识别_第1张图片
可以搭配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提供了大量能使我们快速便捷地处理数据的函数和方法。

你可能感兴趣的:(JAVA,OpenCV,opencv,计算机视觉,人工智能)