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



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

相关内容

  • 没有找到相关文章

最新更新