Opencv人脸检测回路参数

opencv face detection loop parameters

本文关键字:回路 参数 检测 Opencv      更新时间:2023-10-16

我需要解释一下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);
    }

我不懂脸[I]。X和其他for循环参数

他们是如何被选择用于人脸检测的

Thanks for help

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