簡體   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