我在IOS(iPhone)中使用OpenCV
。我用detectMultiScale
来检测人脸。目前,它可以检测多个对象。我想让它只检测最大的物体。当我使用detectMultiScale(Image, faces, 1.1, 3, CASCADE_FIND_BIGGEST_OBJECT)
时,它没有效果。我该怎么做呢?任何帮助都将不胜感激。谢谢你。
如果您查看OpenCV源代码,您可以看到CASCADE_FIND_BIGGEST_OBJECT
没有效果。看看文档中的flags
参数,它说'它不用于新的级联。'。你需要做的是遍历这些面,并通过查看它们的宽度和高度来获得最大的面。
代码如下:
detectMultiScale(Image, faces, 1.1, 3);
cv::Rect biggestRect(0,0,0,0);
for(size_t i = 0; i < faces.size(); ++i)
{
cv::Rect rect = faces[i];
if(rect.width > biggestRect.width)
{
biggestRect = rect;
}
}
cv::Mat biggestFace = Image(biggestRect);