opencv实现人脸检测(Java实现)
opencv实现人脸检测(Java实现)
opencv实现人脸检测(Java实现)
/**
* 人脸识别功能(抄袭DEMO)
* @author SXC
* 2020年7月2日 下午11:23:26
*/
import org.opencv.core.Core;
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.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;
public class FaceRecognition {
static {
//在使用OpenCV前必须加载Core.NATIVE_LIBRARY_NAME类,否则会报错
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
public static void main(String[] args) {
face();
}
/**
* OpenCV-4.0.0 人脸识别
* @return: void
* @date: 2019年5月7日12:16:55
*/
public static void face() {
// 1 读取OpenCV自带的人脸识别特征XML文件
//OpenCV 图像识别库一般位于 opencv\sources\data 下面
CascadeClassifier facebook=new CascadeClassifier("G:\\OpenCV\\opencv\\sources\\data\\haarcascades\\haarcascade_frontalface_alt.xml");
// 2 读取测试图片
Mat image=Imgcodecs.imread("renqun.jpg");
// 3 特征匹配
MatOfRect face = new MatOfRect();
facebook.detectMultiScale(image, face);
// 4 匹配 Rect 矩阵 数组
Rect[] rects=face.toArray();
System.out.println("匹配到 "+rects.length+" 个人脸");
// 5 为每张识别到的人脸画一个圈
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, 0, 255));
Imgproc.putText(image,"man", new Point(rects[i].x, rects[i].y),Imgproc.FONT_HERSHEY_SIMPLEX, 0.75, new Scalar(0, 255, 0),1,Imgproc.LINE_AA,false);
}
// 6 展示图片
HighGui.imshow("人脸识别", image);
HighGui.waitKey(0);
}
}
模型xml文件haarcascade_frontalface_alt.xml下载位置https://download.csdn.net/download/qq_42017767/12813242
运行结果:
opencv实现人脸检测(Java实现)相关教程