我正在使用opencv 2.4.2和c++。关于检测眼睛对的矩形,我有一个小问题。该矩形不会出现在眼睛对周围,而是在检测到的脸部矩形之外。我想我可能没有正确设置参数。

这是一段代码

for(int i=0;i<faces.size();i++){

        rectangle(frame,faces[i],Scalar(255,0,0),1,8,0);

        Mat face  = frame(faces[i]);
        cvtColor(face,face,CV_BGR2GRAY);
        imwrite("C:/Users/DELL/Documents/Visual Studio 2010/Projects/Haarcascade/Haarcascade/fot.jpg",face);
        vector<Rect> eyes;
        eye.detectMultiScale(face,eyes);

        for( size_t j = 0; j < eyes.size(); j++ ){

            rectangle(frame,eyes[i],Scalar(255,0,0),4,8,0);

        }

}

有人可以帮忙吗?

最佳答案

您正在寻找的眼睛范围从0face->width以及从0face->height,因此您可以获得相对于脸部边界的眼睛坐标,然后在原始帧上绘制眼睛。您需要在框架中添加面部坐标,如下所示:

Rect r(faces[i].x + eyes[i].x, faces[i].y + eyes[i].y, eyes[i].width,eyes[i].height );
rectangle(frame,r,Scalar(255,0,0),4,8,0);

关于c++ - 矩形不在检测到的双眼周围,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22142020/

10-12 04:49