我正在使用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);
}
}
有人可以帮忙吗?
最佳答案
您正在寻找的眼睛范围从0
到face->width
以及从0
到face->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/