Как создать собственный каскад хара и применить его?

Мне интересно создать собственный XML файл каскада haar для использования с python, чтобы обнаружить определенный логотип (скажем, это логотип Apple).

Я пробовал следовать инструкциям на http://docs.opencv.org/trunk/doc/user_guide/ug_traincascade.html а также http://note.sonots.com/SciSoftware/haartraining.html

Проблема в том, что, хотя я получаю действующий каскадный файл, он ничего не обнаруживает. в частности, когда я пытаюсь обнаружить объект внутри исходного изображения, используемого для его создания, он еще не обнаружен.

Я уже пробовал изменять размер изображения или просто помещал его в больший контекст, вставляя его в изображение.

что я делаю неправильно?

в оболочке, я запускаю:

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)

и обнаружение появляется пустым. Я попытался протестировать "стандартный" xml, который поставляется с python, и он работает, поэтому с моей ошибкой что-то не так.

Ответ 1

Надеюсь, вы нашли свой ответ уже сейчас, когда прошло 2 года с тех пор, как вы задали свой вопрос! в любом случае я поделюсь тем, что знаю для кого-то другого, у кого может быть такой же вопрос. Один из лучших и полностью объясненных руководств по этому вопросу - Coding-Robin, и я лично многое узнал оттуда. одна вещь, которую следует помнить, заключается в том, что вы не должны использовать тот же образ, который был задействован в создании каскада хара, и причина в том, что он просто уже классифицируется как положительный (или отрицательный) образец, поэтому попытка его обработки довольно бесполезна.