我有一个使用openCV检测面部的视频流,我怎么能捕获最接近相机的面部并将其保存到图像文件?

时间:2014-11-20 20:16:40

标签: c++ opencv

所以我希望将最突出的脸部捕捉为图像文件。

以下是检测代码:

void detectAndDisplay(Mat frame) 
{ 
std::vector<Rect> faces;
Mat gray;

cvtColor(frame, gray, CV_BGR2GRAY);
equalizeHist(gray,gray);
//find faces
face_cascade.detectMultiScale(gray, faces, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));

for (size_t i = 0; i < faces.size(); i++)
{
    Point center(faces[i].x + faces[i].width*0.5, faces[i].y + faces[i].height*0.5);
    //draw around the face
    ellipse(frame, center, Size(faces[i].width*0.5, faces[i].height*0.5), 0, 0, 360, Scalar(255,      255, 255), 4, 8, 0);

    Mat faceROI = gray(faces[i]);

}
imshow(window_name, frame);

}

1 个答案:

答案 0 :(得分:2)

如果检测到的面部的大小足以描述其突出性(实际上并非如此),那么,由于faces的每个元素都是Rect,您可以使用Rect::area()作为衡量标准。