java opencv 实现人脸检测

java调用opencv库自带的人脸识别模型进行人脸识别,并将识别到的人脸图片保存到本地。代码如下:

package com.opencv;

import org.opencv.core.*;
import org.opencv.core.Point;
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 java.text.SimpleDateFormat;
import java.util.Date;

public class Main {

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        System.load("D:\\opencv\\opencv\\build\\x64\\vc15\\bin\\opencv_world453.dll");
        System.load("D:\\opencv\\opencv\\build\\bin\\opencv_videoio_ffmpeg453_64.dll");
    }

    public static void main(String[] args) {
        new Main().test();
    }
 
    public static void test(){
        VideoCapture vc = new VideoCapture();
        CascadeClassifier cascadeClassifier=new CascadeClassifier();
        cascadeClassifier.load("D:\\opencv\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml");
        boolean isOpen = vc.open(0);
        System.out.println("isOpen="+isOpen);

        Mat mat = new Mat();
        Mat gray = new Mat();
        MatOfRect faces= new MatOfRect();
        String winName = "showFrame";
        HighGui.namedWindow(winName);
        while (vc.read(mat)){
            try {
                System.out.println("read.........");
             
                String curTime = new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss_SSS").format(new Date());

                Imgproc.cvtColor(mat,gray,Imgproc.COLOR_RGB2GRAY);
                cascadeClassifier.detectMultiScale(gray,faces,1.2,6,0);
                for (Rect rect : faces.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 (faces.toArray().length>0){
                    Imgcodecs.imwrite("E:\\test\\"+curTime+".jpg",mat);
                }
                HighGui.imshow(winName,mat);
                int key = HighGui.waitKey(1);
            } catch (Exception e) {
                e.printStackTrace();
            }

        }
        HighGui.destroyAllWindows();
        vc.release();
    }

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值