opencv面部检测循环参数

时间:2015-07-27 12:11:51

标签: c++ opencv

我需要在opencv

中解释面部检测的以下循环
VideoCapture capture("DSC_0772.avi"); //-1, 0, 1 device id

Mat cap_img,gray_img;
vector<Rect> faces, eyes;
while(1)
{
    capture >> cap_img;
    waitKey(10);
    cvtColor(cap_img, gray_img, CV_BGR2GRAY);
    cv::equalizeHist(gray_img,gray_img);
    face_cascade.detectMultiScale(gray_img, faces, 1.1, 5, CV_HAAR_SCALE_IMAGE | CV_HAAR_DO_CANNY_PRUNING, cvSize(0,0), cvSize(300,300));
    for(int i=0; i < faces.size();i++)
    {
        Point pt1(faces[i].x+faces[i].width, faces[i].y+faces[i].height);
        Point pt2(faces[i].x,faces[i].y);

        rectangle(cap_img, pt1, pt2, cvScalar(0,255,0), 2, 8, 0);
    }

我不了解faces [i] .x和其他的循环参数

如何选择它们进行面部检测

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

facesstd::vectorRect。所以for循环遍历Rect r中的每个vecto,它创建了两个点。 Rect不仅存储x和y(左上角),还存储矩形的高度和宽度。所以faces[i].x+faces[i].width取矩形的x坐标加上它的宽度,faces[i].y+faces[i].height取矩形的y坐标加上它的高度。这是获得矩形的对角。然后,您将这些点加上图像输入rectangle()函数。