通过haar Cascades检测器来实现面部检测
在OpenCV中已经封装的很好只需要使用cv::CascadeClassifier类就可以很容易的实现面部的检测,
三大步:
1.训练好的特征分类器配置文件haarcascade_frontalface_alt.xml
2.使用CascadeClassifier类方法加载配置文件,face_cascade.load("haarcascade_frontalface_alt.xml")
3.使用CascadeClassifier类方法检测一张图片face_cascade.detectMultiScale
完整代码如下:
// haarCascadesFaceDetection.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "opencv2/opencv.hpp" int main() { cv::CascadeClassifier face_cascade; face_cascade.load("haarcascade_frontalface_alt.xml"); cv::VideoCapture vC(0); while (true) { cv::Mat frame; vC >> frame; cv::Mat frame_gray; cv::cvtColor(frame, frame_gray, cv::COLOR_BGR2GRAY); //cv::equalizeHist(frame_gray, frame_gray); // 检测人脸 std::vector<cv::Rect> faces; face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | cv::CASCADE_SCALE_IMAGE, cv::Size(60, 60)); for (cv::Rect&rec : faces) { cv::rectangle(frame, rec, cv::Scalar(0, 0, 255), 2); } imshow("frame", frame); cv::waitKey(10); } cv::destroyAllWindows(); return 0; }
人脸分类器配置文件下载