OpenCV detectMultiScale:如何使用ios查找最大的对象

时间:2014-05-03 09:02:36

标签: ios opencv

我在IOS(iPhone)中使用OpenCV。我正在使用detectMultiScale来检测面孔。目前,它检测多个对象。我希望它只检测最大的对象。当我使用detectMultiScale(Image, faces, 1.1, 3, CASCADE_FIND_BIGGEST_OBJECT)时,它没有任何效果。我该怎么办呢?任何援助将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:1)

如果查看OpenCV源代码,可以看到CASCADE_FIND_BIGGEST_OBJECT无效。查看documentation处的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);