繁体   English   中英

Opencv 2.4.2代码解释 - 面部识别

[英]Opencv 2.4.2 Code Explanation-Face Recognition

我已经参考了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):

既然你要求面部识别。 它还展示了如何进行人脸检测,因此它也可能很有趣。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM