使用openCV Java API开发人脸识别案例

识别之后的图片

1、下载并认识opencv安装包

官网下载windows版本的安装包。
解析之后得到文件夹

再次进入文件夹

看到核心的文件

文件1:openvc-330.jar 是java的api
文件2:x64/opencv_java330.dll 是opencv的库

2、配置开发环境

将jar包安装包mvn仓库
前提是配置好maven的环境。

mvn install:install-file /
-Dfile=opencv-330.jar /
-DgroupId=net.sourceforge.opencv  /
-DartifactId=opencv-java-3.3.0  /
-Dversion=3.3.0 /
-Dpackaging=jar /

3、创建Maven项目

在项目中添加maven依赖

<dependencies>
        <dependency>
            <groupId>net.sourceforge.opencv</groupId>
            <artifactId>opencv-java-3.3.0</artifactId>
            <version>3.3.0</version>
        </dependency>
    </dependencies>

效果图如下

第一步:添加maven依赖
第二步:检查jar是否加载成功

在项目中配置一个类库

测试环境是否配置成功

 public static void main(String[] args) {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        Mat m = Mat.eye(3,3, CvType.CV_8UC1);
        System.out.println(m.dump());
    }

如果有输出,表示环境配置成功。

4、编写人脸识别的项目

package cn.mxy.opencv.face;

import org.opencv.core.*;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

/**
 * 一个简单的人脸识别项目
 */
public class FaceDetect {
    private static Mat doDetect(Mat src) {
        Mat dst = src.clone();
        CascadeClassifier objDetector = new CascadeClassifier("E:\\itcast\\env\\opencv\\build\\etc\\haarcascades\\haarcascade_frontalface_alt.xml");
        MatOfRect objDetections = new MatOfRect();
        objDetector.detectMultiScale(dst, objDetections);
        if (objDetections.toArray().length <= 0) {
            return src;
        }
        for (Rect rect : objDetections.toArray()) {
            Imgproc.rectangle(dst, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.width), new Scalar(0, 0, 255), 2);
        }
        return dst;
    }

    public static void main(String[] args) {
        try {
            System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
            Mat path = Imgcodecs.imread("input directory\\team.png");
            if (path.empty()) {
                throw new RuntimeException("文件不存在!");
            }
            Mat dst = doDetect(path);
            Imgcodecs.imwrite("output directory\\team11.jpg", dst);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}

原始图片

识别之后的图片

标签: none

相关文章推荐

已有 2 条评论

  1. 毛老师,是否有你关于大数据讲解相关的视频教程,麻烦你提供个地址供我学习一下,非常感谢!

    mao 回复
    1. 视频是公司资料,不方便流出。后期会陆陆续续发一些学习的文档出来的。

      毛祥溢 回复

添加新评论,含*的栏目为必填