如何创建自己的haar级联并应用它?

时间:2012-11-26 17:21:53

标签: python opencv face-detection

我有兴趣创建自己的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进行测试并且它有效,所以我的错误。

1 个答案:

答案 0 :(得分:4)

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