栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

OpenCV和java做人脸识别

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

OpenCV和java做人脸识别

因为学校副院长带我们学习OpenCV做计算机视觉图像处理,小杨一向都是非常对于新技术都是非常追求的。在翻阅了众多大牛写的博客文章和百度上的资料后,终于简单的实现了一个通过计算机调取本地摄像头做人脸识别的功能。

1.下载

首先,我们要去opencv的官网下载windows系统的安装包:
下载地址:https://opencv.org/releases/


1.把图1下面bin目录的文件保存到图2中:

2.导入依赖


        
            org.bytedeco.javacpp-presets
            ffmpeg
            4.1-1.4.4
        
        
            org.bytedeco
            javacv
            1.4.4
        
        
        
            org.bytedeco.javacpp-presets
            ffmpeg-platform
            4.1-1.4.4
        

        
        
        
            org.bytedeco
            javacv-platform
            1.4.4
        
        
        
            org.bytedeco.javacpp-presets
            opencv-platform
            4.0.1-1.4.4
        

3.导入库依赖File --> Project Structure,点击Modules,选择需要使用opencv.jar的项目。





4.人脸识别Demo:

import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.videoio.VideoCapture;
import org.opencv.videoio.VideoWriter;
import org.opencv.videoio.Videoio;

import java.util.Arrays;
import java.util.List;


public class FaceVideo {

    // 初始化人脸探测器
    static CascadeClassifier faceDetector;

    static int i=0;

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        faceDetector = new CascadeClassifier("D:\OpenCV\opencv\sources\data\haarcascades\haarcascade_frontalface_alt.xml");
    }

    public static void main(String[] args) {
        // 1- 从摄像头实时人脸识别,识别成功保存图片到本地
        getVideoFromCamera();
    
    public static void getVideoFromCamera() {
        //1 如果要从摄像头获取视频 则要在 VideoCapture 的构造方法写 0
        VideoCapture capture=new VideoCapture(0);
        Mat video=new Mat();
        int index=0;
        if (capture.isOpened()) {
            while(i<3) {// 匹配成功3次退出
                capture.read(video);
                HighGui.imshow("实时人脸识别", getFace(video));
                index=HighGui.waitKey(100);
                if (index==27) {
                    capture.release();
                    break;
                }
            }
        }else{
            System.out.println("摄像头未开启");
        }
        try {
            capture.release();
            Thread.sleep(1000);
            System.exit(0);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        return;
    }

  
    
    public static Mat getFace(Mat image) {
        // 1 读取OpenCV自带的人脸识别特征XML文件(faceDetector)
//        CascadeClassifier facebook=new CascadeClassifier("D:\Sofeware\opencv\sources\data\haarcascades\haarcascade_frontalface_alt.xml");
        // 2  特征匹配类
        MatOfRect face = new MatOfRect();
        // 3 特征匹配
        faceDetector.detectMultiScale(image, face);
        Rect[] rects=face.toArray();
        System.out.println("匹配到 "+rects.length+" 个人脸");
        if(rects != null && rects.length >= 1) {

            // 4 为每张识别到的人脸画一个圈
            for (int i = 0; i < rects.length; i++) {
                Imgproc.rectangle(image, new Point(rects[i].x, rects[i].y), new Point(rects[i].x + rects[i].width, rects[i].y + rects[i].height), new Scalar(0, 255, 0));
                Imgproc.putText(image, "admin", new Point(rects[i].x, rects[i].y), Imgproc.FONT_HERSHEY_script_SIMPLEX, 1.0, new Scalar(0, 255, 0), 1, Imgproc.LINE_AA, false);
                //Mat dst=image.clone();
                //Imgproc.resize(image, image, new Size(300,300));
            }
            i++;
            if(i==3) {// 获取匹配成功第10次的照片
                Imgcodecs.imwrite("D:\img\" + "face.png", image);
            }
        }
        return image;
}
    }

}


像这样,出现下列错误:

编辑启动类:Edit Configuration VM options:

-Djava.library.path=D:OpenCVopencvbuildjavax64;


执行代码Demo:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777387.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号