2012-07-06 10 views
6

Odsyłam dokumentację dostarczoną przez OpenCV, aby stworzyć program rozpoznawania twarzy, rozpoznaje wiele twarzy i działa normalnie. W dokumentacji zrobili elipsy, aby podkreślić twarz. Co ja nie rozumiem, jak oni obliczyli środek elipsy, które zostały obliczone w następujący sposóbOpencv 2.4.2 Code Explaination-Face Recognition

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 

wektora twarze, które są produkowane przy użyciu jest następująco

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

dokumentacji IE Program jest podany w linku

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

Chcę wiedzieć, w jaki sposób są one obliczaniu środek elipsy i jeśli chcę narysować prostokąt zamiast koła, co mam zrobić?

Odpowiedz

13

Wykryte twarze są zwracane jako zestaw prostokątów otaczających ściany. Jak mówi dokumentacja, wyjście to: Vector of rectangles where each rectangle contains the detected object.

Zatem jeden prostokąt składa się z [ initial x, initial y, width, height ]. Więc możesz znaleźć jego centrum przez (x + width*0.5 , y + height*0.5). To centrum jest takie samo dla elipsy.

Jeśli chcesz narysować prostokąty, użyj funkcji rectangle. Zobacz Documentation.

Argumenty funkcji będzie wyglądał następująco:

pt1 = (x , y) 

pt2 = (x + width , y + height) 

zmienić linię rysowania elipsy do następującej linii:

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

Daje wynik następująco:

enter image description here

4

Nawiasem mówiąc, OpenCV 2.4.2 ma rozpoznawanie twarzy ded. Oto przykładowy poradnik i pełny kod źródłowy dla łączenia funkcji wykrywania twarzy (z cv :: CascadeClassifier) ​​oraz rozpoznawania twarzy (z cv :: FaceRecognizer):

Ponieważ poprosiłeś dla rozpoznawania twarzy . Pokazuje również, jak wykonać wykrywanie twarzy, więc może być również interesujące.

+0

Widziałem to. Dzięki. –

+0

Nie obsługuje wielu modeli rozpoznawania wielu twarzy z filmu wideo. W jaki sposób można zmodyfikować kod tego kodu? Naiwnym sposobem będzie utrzymanie listy modeli, jednak nie wydaje się to skuteczną implementacją. – Tariq