2012-07-06 91 views
6

Tôi đã giới thiệu tài liệu do OpenCV cung cấp để tạo chương trình nhận diện khuôn mặt, nó nhận dạng nhiều khuôn mặt và hoạt động bình thường. Trong tài liệu, họ đã tạo hình elip để làm nổi bật khuôn mặt. Những gì tôi không hiểu là làm thế nào họ đã tính toán trung tâm của hình elip mà họ đã tính toán như sauOpencv 2.4.2 Giải thích mã-Nhận dạng khuôn mặt

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 

Các mặt vector mà họ đang sử dụng được sản xuất như sau

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

Các ví dụ tài liệu chương trình được đưa ra trong liên kết

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

tôi muốn biết làm thế nào họ đang tính toán trung tâm của elip và nếu tôi muốn vẽ hình chữ nhật thay vì hình tròn, tôi phải làm gì?

Trả lời

13

Khuôn mặt được phát hiện được trả về dưới dạng tập hợp các hình chữ nhật bao quanh khuôn mặt. Như tài liệu cho biết, đầu ra là Vector of rectangles where each rectangle contains the detected object.

Vì vậy, một hình chữ nhật bao gồm [ initial x, initial y, width, height ]. Vì vậy, bạn có thể tìm thấy trung tâm của nó bằng cách (x + width*0.5 , y + height*0.5). Trung tâm này cũng giống như hình elip.

Nếu bạn muốn vẽ hình chữ nhật, hãy sử dụng chức năng rectangle. Xem Documentation.

lý lẽ cho rằng chức năng sẽ thực hiện như sau:

pt1 = (x , y) 

pt2 = (x + width , y + height) 

Thay đổi dòng vẽ hình elip để dòng sau:

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

Nó cho kết quả như sau:

enter image description here

4

Nhân tiện, OpenCV 2.4.2 có nhận diện khuôn mặt inclu suy luận Đây là một hướng dẫn và nguồn đầy đủ mẫu mã để kết hợp nhận diện khuôn mặt (với cv :: CascadeClassifier) ​​và nhận dạng khuôn mặt (với cv :: FaceRecognizer):

Kể từ khi bạn yêu cầu nhận dạng khuôn mặt . Nó cũng cho thấy làm thế nào để làm phát hiện khuôn mặt, vì vậy nó có thể là thú vị là tốt.

+0

Tôi đã thấy điều này. Cảm ơn. –

+0

Nó không hỗ trợ nhiều mô hình để nhận dạng nhiều khuôn mặt từ video. Mã này có thể được sửa đổi như thế nào? Một cách ngây thơ sẽ là duy trì một danh sách các facemodels, tuy nhiên, điều này dường như không thực hiện hiệu quả. – Tariq

Các vấn đề liên quan