Opencv C++ 教程-人脸识别
【1】代码
int FaceDetect(string path) {cv::Mat image = cv::imread(path);if (image.empty()) {std::cout << "Could not open or find the image" << std::endl;return -1;}cv::CascadeClassifier face_cascade;if (!face_cascade.load(cv::samples::findFile("haarcascade_frontalface_alt.xml"))) //xml的绝对路径{std::cout << "Error loading face cascade" << std::endl;return -1;}std::vector<cv::Rect> faces;cv::Mat gray;cv::cvtColor(image, gray, cv::COLOR_BGR2GRAY);cv::equalizeHist(gray, gray);face_cascade.detectMultiScale(gray, faces, 1.1, 2, 0 | cv::CASCADE_SCALE_IMAGE, cv::Size(30, 30));for (size_t i = 0; i < faces.size(); i++) {cv::rectangle(image, faces[i], cv::Scalar(255, 0, 0), 2);}cv::imshow("Face Detection", image);cv::waitKey(0);
}
【2】haarcascade_frontalface_alt.xml
Haar分类器实际上是Boosting算法的一个应用,Haar分类器用到了Boosting算法中的AdaBoost算法,只是把AdaBoost算法训练出的强分类器进行了级联,并且在底层的特征提取中采用了高效率的矩形特征和积分图方法