一、主要步骤
1、定义识别物体的结构信息(xml文件)
已定义好的:人脸文件 haarcascade_frontalface_alt.xml
人眼文件 haarcascade_eye_tree_eyeglasses.xml
2、将物体的信息文件load到定义的CascadeClassifier的变量内
CascadeClassifier face_cascade;
face_cascade.load("haarcascade_frontalface_alt.xml");
3、调用该类的detectMultiScale函数检测出物体所在矩形区域
4、显示目标,调用ellips函数将得到的faces矩形框显示出来
二、对图像的处理
1、将图像变为灰度图(Mat gray)
CVtColor(img,gray,CV_BGR2GRAY);
2、将尺寸缩小,加快检测速度(double scale=1.3)
Mat smallImg( cvRound (img.rows/scale), cvRound(img.cols/scale), CV_8UC1 );
resize(gray,smallImg,smallImg.size,0,0,INTER_LINEAR);
3、直方图均衡化
equalizeHist( smallImg, smallImg );
4、检测人脸detectMultiScale
cascade.detectMultiScale( smallImg, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE,Size(30, 30) );
CV_HAAR_FIND_BIGGEST_OBJECT (最大目标检测)
CV_HAAR_DO_CANNY_RRUNING(canny边缘检测)
CV_HAAR_DO_ROUGH_SEARCH (粗略搜索)