【问题标题】:How do I create my own haar cascade and apply it?如何创建自己的 haar 级联并应用它?
【发布时间】:2012-11-14 05:27:47
【问题描述】:

我有兴趣创建自己的 haar cascade xml 文件,用于 python 检测某个徽标(假设它是苹果徽标)。

我已尝试按照以下说明进行操作 http://docs.opencv.org/trunk/doc/user_guide/ug_traincascade.htmlhttp://note.sonots.com/SciSoftware/haartraining.html

问题是,虽然我得到了一个有效的功能级联文件,但它没有检测到任何东西。 具体来说,当我尝试检测用于创建它的原始图像中的对象时,即使那时也没有检测到它。

我已经尝试过调整图像的大小,或者只是通过将其插入图片来将其置于更大的上下文中。

我做错了什么?

在 shell 中,我运行:

opencv_createsamples -img original.jpg -bg negatives.dat -vec samples_set.vec  -w 48 -h 48

opencv_traincascade -bg negatives.dat -data mycascade -vec samples_set.vec -w 48 -h 48

这似乎工作正常,创建一个级联文件。 然后,在python中:

import cv2
cascade2 = cv2.CascadeClassifier('mycascade.xml')
cv2Image = cv2.imread('original.jpg')
cascade2.detectMultiScale(cv2Image)

检测结果为空。我确实尝试使用 python 附带的“标准”xml 进行测试并且它可以工作,所以我的有问题。

【问题讨论】:

  • 如果您真的在进行徽标检测,我建议您使用 SIFT/SURF/ORB/MSER 进行特征提取和匹配 .. 因为徽标形状通常是恒定的,所以提取的特征应该匹配得很好。在我的意见中,带有 haar 特征的徽标检测将非常奇怪。因为通常徽标没有足够的特征来通过 opencv 像其他对象(面部、眼睛、鼻子等)一样进行训练。标志通常充满棱角。但我也想听听你的结果。
  • -w 48 -h 48 似乎很多。 (默认为 24​​)。您尝试过较小的值吗?这是“内部尺寸”,而不是您在 createsamples 阶段的徽标尺寸

标签: python opencv face-detection


【解决方案1】:

我希望您现在已经找到了答案,因为您提出问题已经 2 年了!无论如何,我会为可能有同样问题的其他人分享我所知道的。 Coding-Robin 是关于这个问题的最好的和完全解释的教程之一,我个人从那里学到了很多东西。要记住的一件事是,您不应该使用创建 haar 级联所涉及的相同图像,原因是它已经被归类为正(或负)样本,因此尝试处理它是毫无用处的。

【讨论】:

    猜你喜欢
    • 2011-11-06
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 2015-08-24
    • 2020-10-16
    • 2020-02-17
    • 2015-09-18
    • 1970-01-01
    相关资源
    最近更新 更多