在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;
}
人脸分类器配置文件下载