Как создать собственный каскад хара и применить его?
Мне интересно создать собственный 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, и я лично многое узнал оттуда. одна вещь, которую следует помнить, заключается в том, что вы не должны использовать тот же образ, который был задействован в создании каскада хара, и причина в том, что он просто уже классифицируется как положительный (или отрицательный) образец, поэтому попытка его обработки довольно бесполезна.