本节不做过多的详细解释,因为代码段中用到的级联分类器是opencv中自己已经训练好的。以后有空了自己会自己训练看看。
int main()
{
VideoCapture cap(""); //输入的为0开启摄像头
CascadeClassifier cascade;
cascade.load("haarcascade_frontalface_alt.xml");
bool stop = false;
while (!stop)
{
Mat frame, gray;
vector<Rect> faces(0);
cap >> frame;
cvtColor(frame, gray, CV_BGR2GRAY);
cascade.detectMultiScale(gray, faces, 1.1, 2, 0 || CV_HAAR_SCALE_IMAGE, Size(20, 20));
for (size_t i = 0; i < faces.size(); i++)
{
if (faces[i].height >0 && faces[i].width>0)
{
rectangle(frame, faces[i], Scalar(0, 0, 255), 2, 8, 0);
}
}
imshow("face", frame);
if (waitKey(5) >= 0)
{
stop = true;
}
}
return 0;
}