我使用的是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 :(得分:1)
您正在寻找范围从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);