2012-07-06 4 views
6

OpenCV에서 제공 한 설명서를 참조하여 얼굴 인식 프로그램을 만들었으므로 여러 얼굴을 인식하고 정상적으로 작동합니다. 문서에서 그들은 얼굴을 강조하기 위해 타원을 만들었습니다. 내가 이해하지 못하는 것은Opencv 2.4.2 코드 설명 - 얼굴 인식

face_cascade.detectMultiScale(frame_gray,faces,1.1,2,0|CV_HAAR_SCALE_IMAGE,cv::Size(30,30)) 

문서의 예를 다음과 같이 그들이 생산 사용하는

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 

얼굴 벡터를 다음과 같이 자신이 계산 한 타원의 중심을 계산 한 방법이다 이 프로그램은

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

나는 그들이 타원의 중심을 계산하는 방법을 알고 싶어요 링크에 나와있다 원 대신 사각형을 그리려면 무엇을해야합니까?

답변

13

감지 된면은면을 둘러싼 직사각형 세트로 반환됩니다. 문서에서 말하는 것처럼 출력은 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 기능을 사용하십시오. Documentation을 참조하십시오.

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); 

그것은 결과를 제공한다 : 다음과 같은 함수

인수 것이다

enter image description here

4

그런데 OpenCV 2.4.2에는 얼굴 인식 기능이 포함되어 있습니다. inclu ded. 여기에 얼굴 인식 (CV : CascadeClassifier과) 얼굴 인식을 결합하기위한 튜토리얼 및 전체 소스 코드 샘플 (이력서와 함께 :: FaceRecognizer)입니다 : 당신이 얼굴 인식을 요구하기 때문에

. 또한 얼굴 인식을하는 방법을 보여주기 때문에 재미있을 수도 있습니다.

+0

본 적이 있습니다. 감사. –

+0

비디오에서 여러 얼굴을 인식 할 수있는 여러 모델을 지원하지 않습니다. 이 코드 코드는 어떻게 수정 될 수 있습니까? 순진한 방법은 facemodels의 목록을 유지하는 것입니다, 그러나, 이것은 효율적인 구현처럼 보이지 않습니다. – Tariq