【问题标题】:Why does detectMultiScale return no faces?为什么detectMultiScale不返回人脸?
【发布时间】:2014-05-03 20:50:31
【问题描述】:

我尝试使用教程代码from opencv tutorials 来检测人脸。所有级联均已正确加载,但在调用之后

faceCascade.detectMultiScale( frame_gray, faces, 1.1, 2, 0|CV_HAAR_SCALE_IMAGE, Size(20, 20) ); 

我没有得到任何面孔,这意味着 faces.size() 返回 0。 有人玩过这段代码吗?它有效吗?我可能有什么问题?

【问题讨论】:

  • 如果您自己解决了这个问题,建议您回答您自己的问题并接受。

标签: c++ visual-c++ opencv face-detection


【解决方案1】:

您将检测到的最小对象大小指定为 (20,20)。也许您的图像包含尺寸小得多的面孔。尝试将其更改为较小的数字。

这个页面解释了detectMultiScale函数的各种参数:

http://docs.opencv.org/modules/objdetect/doc/cascade_classification.html

【讨论】:

  • 感谢您的提示,但我玩过各种尺寸的游戏,我也知道建议的手册,以及许多其他的。这个对detectMultiScale 的调用有点奇怪。在将 .xml 文件移动到程序目录之后,我独立编译了示例代码并且它可以工作。但是当我在我自己的类中使用它作为方法时它不起作用。我试图更改从 VideoCapture 获取的捕获流,但也没有结果。也许 .xml 文件读错了。你知道怎么检查吗?还有更多。我检查了我在 Python 中使用的所有方法,它们都在工作。
  • 好的,我使用了 CascadeClassifier 类的 cascade.empty() 方法,它返回 True。然后呢?
  • 在调试模式下编译代码,看看级联文件是否被正确解析。
  • 好的,谢谢。我在显示是否加载了级联的部分代码中有一个错误。它不是。 XML 文件必须在 prog 目录中。
【解决方案2】:

正如我在 2014 年 3 月 28 日 11:57 所写的那样,我在显示是否加载了级联的部分代码中有一个错误。它不是。 XML 文件必须在 prog 目录中 解决了

【讨论】:

  • @StefanoSanfilippo 他的帖子实际上是为了回答。这就是为什么他说解决了。 “XML 文件必须在 prog 目录中”我认为是他找到的解决方案。
  • @sashoalm 我不得不承认,这是否是答案还不清楚,但仔细想想,是的,你是对的。
  • 感谢您的理解。是的,解决方法是将xml文件放入程序目录(文件夹)中。
猜你喜欢
  • 2014-09-01
  • 2019-06-21
  • 2017-06-06
  • 2016-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
相关资源
最近更新 更多