我刚才提到的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
我想知道他们是如何计算椭圆的中心,如果我想画一个矩形,而不是圆的,我有什么做的?
检测到的面部被返回作为一组围绕该面的矩形。 作为文档说,输出是Vector of rectangles where each rectangle contains the detected object.
这样一个矩形是由[ initial x, initial y, width, height ]
。 所以,你可以找到它的中心( 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);
它给出结果如下:
顺便说一句,OpenCV的2.4.2具有包括脸部识别。 下面是用于组合的人脸检测(与CV :: CascadeClassifier)和面部识别(与CV :: FaceRecognizer)的教程和完整的源代码示例:
- http://docs.opencv.org/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.html
既然你问的人脸识别。 它还演示了如何做的人脸检测,所以它可能是有趣的为好。