2.4.2 OpenCV的代码解释,人脸识别(Opencv 2.4.2 Code Explanati

2019-07-30 07:12发布

我刚才提到的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

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

Answer 1:

检测到的面部被返回作为一组围绕该面的矩形。 作为文档说,输出是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);

它给出结果如下:



Answer 2:

顺便说一句,OpenCV的2.4.2具有包括脸部识别。 下面是用于组合的人脸检测(与CV :: CascadeClassifier)和面部识别(与CV :: FaceRecognizer)的教程和完整的源代码示例:

  • http://docs.opencv.org/modules/contrib/doc/facerec/tutorial/facerec_video_recognition.html

既然你问的人脸识别。 它还演示了如何做的人脸检测,所以它可能是有趣的为好。



文章来源: Opencv 2.4.2 Code Explanation-Face Recognition