2012-03-12 2 views
2

Я установил opencv (2.3.1), и теперь я использую его с Qt (SDK 1.1.3, Creator 2.3.0). (Я использовал этот учебник: http://www.barbato.us/2011/12/20/opencv-2-3-qtcreator-windows/)Инициализация OpenCV CascadeClassifier

Первое, что я пробовал, было примером HelloWorld (как в начале работы на официальном сайте), и никаких проблем с ним не возникало. Я также пробовал некоторые другие примеры.

Теперь у меня проблема с примером распознавания лиц. Сам код можно найти здесь: http://www.opencv.org.cn/opencvdoc/2.3.1/html/doc/tutorials/objdetect/cascade_classifier/cascade_classifier.html, но когда я пытаюсь запустить его, программа выходит с кодом 0, как будто все в порядке, но ничего на самом деле не происходит. Спустя несколько часов, пытаясь решить проблему, я обнаружил, что сама проблема находится в переменной CascadeClassifier. Поэтому, если у меня есть рабочий образец, а затем я пытаюсь инициализировать объект класса CascadeClassifier, программа просто выходит с кодом 0 в этой строке.

CascadeClassifier face_cascade; 

Он также не зависит от того, является ли эта переменная глобальной или нет. Я также пытался инициализировать указатель, но то же самое происходит и при создании объекта.


Наконец-то я перекомпилировал всю библиотеку, и теперь все в порядке. Спасибо за ответы!

+0

делает ваш код загрузки 'haarcascade_frontalface_alt.xml' успешно? –

+1

Как я могу проверить его? Моя программа завершилась неудачей перед загрузкой, в строке, которую я написал в исходном сообщении – user1263702

+0

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

ответ

0

Я бы скопировал данные из OCV в каталог, содержащий исполняемый файл. Данные обнаружения лица образца находятся в исходном дереве OpenCV OpenCV-2.3.1/data/haarcascades/. Скопируйте haarcascade_frontalface_alt.xml и haarcascade_eye_tree_eyeglasses.xml оттуда в целевой каталог вашей программы.

+0

Я уже это сделал, но программа закрывается при вызове конструктора CascadeClassifier (независимо от того, что он вызывается с именем файла или нет, само имя файла правильно, я его проверил) – user1263702

-1

Вы можете проверить, если ваш классификатор был успешно загружен с этим кодом:

if (!cascade.load(classifierdir)) { 
    printf("Unable to load classifier from %s\n", classifierdir); 
    return 1; 
} 
+1

Я не могу попробовать, потому что если я это сделаю, программа закроется в строке инициализации «каскадной» переменной, например: 'code' CascadeClassifier cascade; 'code' – user1263702

Смежные вопросы