Opencv 2.4.2代码解释-人脸识别

6
我参考了OpenCV提供的文档制作了一个人脸识别程序,它可以识别多张脸并正常运行。在文档中,他们使用椭圆来突出显示脸部。但我不理解的是,他们如何计算椭圆的中心,他们的计算方法如下:
for( int i = 0; i < faces.size(); i++ )
{
   Point center(faces[i].x+faces[i].width*0.5,faces[i].y+faces[i].height*0.5);
   //more code follows drawing the ellipse

他们使用的面部向量是按照以下方式产生的。
face_cascade.detectMultiScale(frame_gray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE,cv::Size(30,30))

文档,即程序,给出了链接。

http://docs.opencv.org/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html

我想知道他们如何计算椭圆的中心,如果我想画一个矩形而不是圆形,我该怎么做?
2个回答

13

检测到的人脸以一组包围它们的矩形返回。正如文档所说,输出是一个矩形向量,其中每个矩形都包含检测到的对象。

因此,一个矩形由[初始x,初始y,宽度,高度]组成。你可以通过(x + width*0.5,y + height*0.5)找到其中心。椭圆的中心也是相同的。

如果你想要绘制矩形,请使用rectangle函数。请参阅文档

函数中的参数将如下所示:

pt1 = ( x , y )

pt2 = ( x + width , y + height )

将线条绘制椭圆修改为以下线条:

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

它的结果如下所示:

在此输入图片描述


4

它不支持从视频中识别多个面孔的多模型。如何修改这段代码来实现这一功能呢?一个天真的方法是维护一个面部模型列表,但这似乎并不是一个有效的实现方式。 - Tariq

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接