#include "opencv2/objdetect.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>
using namespace std;
using namespace cv;
int _tmain(int argc, _TCHAR* argv[])
{
VideoCapture capture;
Mat frame, image;
string inputName;
bool tryflip;
CascadeClassifier cascade, nestedCascade;
double scale;
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
if(0==face_cascade.load("haarcascade_frontalface_alt.xml"))
{
cout << "load face xml err!" << endl;
return -1;
}
if(0==eyes_cascade.load("haarcascade_eye_tree_eyeglasses.xml"))
{
cout << "load face xml err!" << endl;
return -1;
}
image = imread( "./lena.jpg", 1 );
if(image.empty()) cout << "Couldn't read ./lena.jpg" << endl;
std::vector<cv::Rect> faces;
std::vector<cv::Rect> eyes;
face_cascade.detectMultiScale(image, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE,Size(30, 30));
eyes_cascade.detectMultiScale(image, eyes, 1.1, 2, 0 | CASCADE_SCALE_IMAGE,Size(30, 30));
for (int i = 0; i < faces.size(); i++)
{
rectangle(image,Point(faces[i].x,faces[i].y),Point(faces[i].x+faces[i].width,faces[i].y+faces[i].height),Scalar(255,255,0));
}
for (int i = 0; i < eyes.size(); i++)
{
rectangle(image,Point(eyes[i].x,eyes[i].y),Point(eyes[i].x+eyes[i].width,eyes[i].y+eyes[i].height),Scalar(255,0,0));
}
imshow("Test",image);
imwrite("Out.bmp",image);
waitKey();
return 0;
}
最终效果: