opencv-platform实现人脸识别

和同事接触了下甲方,对方算是一个资源整合的自由人,手里有项目,然后认识些开发就聊下有什么事情可以做的,对方聊了下做人脸签到,或者说人脸打开。就这方面我做了下简单的了解。做了个java小demo。

我们常用的人脸识别的摄像头屏幕就是一个简单的图片视频提供的工具,人脸识别的实现都是后台的实现。

java中有个opencv-platform封装好的包,简单的引入项目然后通过下面的代码就能清晰的圈出图片中的人脸

复制代码
package com.gzl.opence;


import org.bytedeco.javacpp.Loader;
import org.bytedeco.opencv.global.opencv_core;
import org.bytedeco.opencv.global.opencv_imgcodecs;
import org.bytedeco.opencv.global.opencv_imgproc;
import org.bytedeco.opencv.opencv_core.*;
import org.bytedeco.opencv.opencv_objdetect.CascadeClassifier;

public class OpencvApplication {

    static {
        Loader.load(opencv_core.class);
    }

    public static void main(String[] args) {
        // 读取图像
        String filePath = "F:\\GAO\\Desktop/person1.jpg";
        Mat image = opencv_imgcodecs.imread(filePath);

        if (image.empty()) {
            System.out.println("图像加载失败!");
            return;
        }

        // 转换为灰度图像
        Mat grayImage = new Mat();
        opencv_imgproc.cvtColor(image, grayImage, opencv_imgproc.COLOR_BGR2GRAY);

        // 加载人脸分类器
        String xmlFile = "E:\\study\\gzl_base\\gzl_opencv\\gzl_opencv_server\\src\\main\\resources/haarcascade_frontalface_alt.xml";
        CascadeClassifier faceDetector = new CascadeClassifier(xmlFile);
        // 检测人脸
        RectVector faceDetections = new RectVector();
        faceDetector.detectMultiScale(grayImage, faceDetections);

        System.out.println(String.format("检测到 %s 张人脸", faceDetections.size()));

        // 在图像上绘制人脸矩形
        for (int i = 0; i < faceDetections.size(); i++) {
            Rect rect = faceDetections.get(i);
            opencv_imgproc.rectangle(image, new Point(rect.x(), rect.y()),
                    new Point(rect.x() + rect.width(), rect.y() + rect.height()),
                    new Scalar(0, 255, 0, 0));
        }

        // 保存处理后的图像
        String outputFilePath = "output.jpg";
        opencv_imgcodecs.imwrite(outputFilePath, image);
        System.out.println("处理后的图像已保存:" + outputFilePath);
    }
}

上面的代码是实现了 图片中识别到人。如果做人脸签到还需要做些其他的操作。后续更新

相关推荐
ANGLAL2 分钟前
35.登录认证演进及双token机制
java
毕设源码-朱学姐3 分钟前
【开题答辩全过程】以 基于spring boot的摩托车合格证管理系统为例,包含答辩的问题和答案
java·spring boot·后端
独自破碎E11 分钟前
LCR005-最大单词长度乘积
java·开发语言
码农阿豪13 分钟前
影刀RPA与Java融合实践:打造高效智能的高铁票务解决方案
java·python·rpa
龚礼鹏20 分钟前
图像显示框架十一——BufferQueue的工作流程(基于Android 15源码分析)
java·网络·数据库
爬山算法21 分钟前
Hibernate(72)如何在NoSQL数据库中使用Hibernate?
java·nosql·hibernate
毕设源码-赖学姐22 分钟前
【开题答辩全过程】以 基于spring boot的国学诗词网站设计与实现--为例,包含答辩的问题和答案
java·spring boot·后端
Hellc00737 分钟前
Jenkins 上下游 Job + Docker 镜像部署完整实战(避坑版)
java·docker·jenkins
_周游41 分钟前
Java8 API 文档搜索引擎_1. 项目简介与模块划分
java·搜索引擎·servlet·maven·intellij-idea
奋进的芋圆1 小时前
Spring Boot 3.x 企业级 SSO 单点登录实现指南
spring boot·spring cloud