opencv::人脸识别
再次加权重
分 类 器: 判别某个事物是否属于某种分类的器件,两种结果:是、否
级联分类器: 可以理解为N个单类的分类器串联起来。如果一个事物能属于这一系列串联起来的的所有分类器,则最终结果就是 是,若有一项不符,则判定为否
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { //已训练好的模型 String cascadeFilePath = "D:/Appinstall/opencv-3.4.4_vc15/etc/haarcascades/haarcascade_frontalface_alt.xml"; CascadeClassifier face_cascade; //分类器 if (!face_cascade.load(cascadeFilePath)) { printf("could not load haar data...\n"); return -1; } Mat src, gray_src; src = imread("D:/images/cvtest.png"); cvtColor(src, gray_src, COLOR_BGR2GRAY); //级联检测 equalizeHist(gray_src, gray_src); imshow("input image", src); vector<Rect> faces; face_cascade.detectMultiScale(gray_src, faces, 1.1, 2, 0, Size(30, 30)); for (size_t t = 0; t < faces.size(); t++) { rectangle(src, faces[t], Scalar(0, 0, 255), 2, 8, 0); } namedWindow("output", CV_WINDOW_AUTOSIZE); imshow("output", src); waitKey(0); return 0; }