Java之opencv人脸识别

OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类 构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了 图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言 接口。该库也有大量的Python, Java and MATLAB/OCTAVE (版本2.5)的接口。这些语言的API接口函数可以通过在线 文档获得。如今也提供对于C#,Ch, Ruby的支持。

1.加载dll资源库

static {
    System.loadLibrary("libs/x64/opencv_java246");
}

2.获取图片人脸范围

/**
 * 获取人脸范围
 * @param fileName
 * @return
 */
public static MatOfRect detectFace(String fileName) {
    CascadeClassifier faceDetector = new CascadeClassifier("libs/lbpcascade_frontalface.xml");
    Mat image = Highgui.imread(fileName);
    MatOfRect faceDetections = new MatOfRect();
    // 指定人脸识别的最大和最小像素范围
    Size minSize = new Size(120, 120);
    Size maxSize = new Size(250, 250);
    // 参数设置为scaleFactor=1.1f, minNeighbors=4, flags=0 以此来增加识别人脸的正确率
    faceDetector.detectMultiScale(image, faceDetections, 1.1f, 4, 0,
            minSize, maxSize);
    return faceDetections;
}

3.获取人脸范围并在图片人脸处画矩形框

/**
 * Detects faces in an image, draws boxes around them, and writes the results
 * @param fileName
 * @param destName
 */
public static void drawRect(String fileName, String destName){
    Mat image = Highgui.imread(fileName);
    // Create a face detector from the cascade file in the resources
    // directory.
    CascadeClassifier faceDetector = new CascadeClassifier("libs/lbpcascade_frontalface.xml");
    // Detect faces in the image.
    // MatOfRect is a special container class for Rect.
    MatOfRect faceDetections = new MatOfRect();
    faceDetector.detectMultiScale(image, faceDetections);
    // Draw a bounding box around each face.
    for (Rect rect : faceDetections.toArray()) {
        Core.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height), new Scalar(0, 255, 0));
    }

    Highgui.imwrite(destName, image);

}
同理:身份证号提取也是先判断人脸处,然后判断身份证号位置,再利用tess4j提取图片中的身份证号
具体代码请移步github  https://github.com/followwwind/javautils

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java调用OpenCV实现人脸识别考勤的步骤如下: 1. 安装OpenCV库:在Java项目中引入OpenCV库,可以使用Maven或手动下载并导入。 2. 加载人脸识别模型:使用OpenCV提供的CascadeClassifier类加载人脸识别模型,该模型可以从OpenCV官网下载。 3. 读取图片或视频:使用OpenCV提供的VideoCapture类读取图片或视频。 4. 人脸检测:使用CascadeClassifier类的detectMultiScale方法进行人脸检测,返回检测到的人脸位置。 5. 人脸识别:使用OpenCV提供的LBPHFaceRecognizer类进行人脸识别,该类需要训练数据集和测试数据集。 6. 考勤记录:根据人脸识别结果进行考勤记录,可以将记录保存到数据库或文件中。 以上是Java调用OpenCV实现人脸识别考勤的基本步骤,具体实现需要根据具体需求进行调整和优化。 ### 回答2: Java调用OpenCV人脸识别考勤可以在人力资源管理、安保管理等领域广泛应用。下面我来和大家分享一下如何进行Java调用OpenCV人脸识别考勤。 1. 首先,我们需要安装OpenCV库。OpenCV是一个开源的计算机视觉库,可用于图像处理、计算机视觉和机器学习等相关应用。我们可以从OpenCV的官网上下载最新版本的库,并按照安装指引逐步进行安装。 2. 接着,我们需要在Java中引用OpenCV库。我们可以在Java代码中添加OpenCV库的路径,或者将OpenCV库打包成Jar文件,并在项目中引用该Jar文件。 3. 然后,我们需要进行人脸识别的数据收集和预处理。首先,我们需要收集一定数量的人脸数据,并进行预处理,如实现数据的裁剪、缩放和灰度变换等,以提高人脸识别的准确性。 4. 接下来,我们需要训练模型。使用OpenCV人脸识别算法,对收集到的人脸数据进行训练,以建立一套人脸识别模型。通过对收集到的图片进行逐一比对,可以判断目标人物是否在图片中,并进行相关处理。 5. 最后,我们需要将人脸识别考勤应用到实际场景中。在建立好人脸识别模型后,我们可以在Java程序中调用该模型,通过摄像头捕捉人脸图像,并进行人脸匹配,判断目标人物是否在考勤范围中,并进行相关考勤记录处理。 总而言之,Java调用OpenCV人脸识别考勤需要进行许多数据处理和算法训练。但是,一旦建立好相关模型和程序框架,就可以在相应的场景中大大提高人力资源管理、安保管理等方面的工作效率。 ### 回答3: Java调用opencv人脸识别考勤是一种利用计算机视觉技术进行考勤的方法。在此过程中,Java作为程序编程语言,而opencv则是计算机视觉库。人脸识别技术是一种验证身份的方式,基于面部特征对人进行识别,其应用已被广泛使用在图像和视频处理中。 在进行java调用opencv人脸识别考勤时,需要进行以下步骤: 1.安装和配置opencv库:首先,需要安装opencv库,这可以通过官方网站下载进行实现。然后需要将opencv库和java的开发工具进行关联和配置。 2.图像的采集和处理:考勤系统需要对员工进行面部识别。这需要安装相应摄像头和采集图像。Java调用opencv库中的图像处理函数进行图像的处理和人脸特征的分析和提取。 3.人脸识别:这是实现考勤的核心部分。Java调用opencv库中的人脸识别算法和识别器完成对人脸的特征提取和人脸识别。此外,也需要完成对数据模型和识别算法的训练和调优。 4.考勤结果输出:最后,Java调用opencv库中的数据输出函数生成考勤结果。这些结果可以在考勤管理系统中进行保存和使用。 通过java调用opencv人脸识别技术进行考勤,可以更快、更准确地对员工进行识别,避免迟到早退等问题。这种方法也节省了人力成本,提高了公司的工作效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值