JAVA使用opencv进行人脸识别的例子

环境:windows

opencv版本4.0

java版本1.8

直接上代码

 

package mypkg;

import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.objdetect.CascadeClassifier;
import org.opencv.videoio.VideoCapture;
import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;

public class TestFace {

	public static void main(String[] args) {
		System.out.println("###start###");
		System.load("F:/lee/apps/opencv/build/java/x64/opencv_java400.dll");
		
		testFace();
		System.out.println("###end###");
	}

	private static void testFace() {
		VideoCapture vc = new VideoCapture(0);
		Mat mat = new Mat();
		String winName = "showFrame";
		HighGui.namedWindow(winName);
		HighGui.resizeWindow(winName, 800, 600);
		// 
		CascadeClassifier faceDetector  = new CascadeClassifier("F:/lee/workspace_2/testOpencv4/src/haarcascade_frontalface_default.xml");
		
		//
		while(vc.read(mat)){
			// 识别并添加
			MatOfRect faceDetections = new MatOfRect();
	        faceDetector.detectMultiScale(mat, faceDetections);
	        System.out.println(String.format("Detected %s faces", faceDetections.toArray().length));
	        for (Rect rect : faceDetections.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));
	        }
			
			
	        // 显示及退出
			HighGui.imshow(winName, mat);
			// waitkey 必须要,否则无法显示
			int key = HighGui.waitKey(1);
			System.out.println("key="+key);
			if(key == 27){
				break;
			}
		}
		HighGui.destroyAllWindows();
		//
		vc.release();
	}

}

 

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值