2012-01-13 3 views
0

Я делаю проект в Visual Studio 2010 с использованием библиотеки Qt4.8.0 и OpenCV2.3.1. Все нормально, если я не используюOpenCV cvHaarDetectObject ошибка

cvHaarDetectObjects() 

функция. Программа была скомпилирована и построена без проблем, но когда я пытаюсь запустить приложение, появляется ошибка 0xc000007b. Я сделал аналогичную программу в консоли win, и эта функция работает правильно. Почему я получаю это сообщение об ошибке? Я также пытаюсь использовать:

CascadeClassifier *haar; 
haar->load("haarcascade_frontalface_alt.xml"); 

но он не работает даже в консоли.

Пример кода

mainwindow.cpp:

MainWindow::MainWindow() 
{ 
temp = cvCreateImage(cvSize(200, 200), 8, 1); 
haarface = (CvHaarClassifierCascade*) cvLoad("haarcascade_frontalface_alt.xml"); 
storage = cvCreateMemStorage(0); 
twarze = cvHaarDetectObjects(temp, haarface, storage, 1.1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize(100,100)); 
} 

mainwindow.h:

class MainWindow 
{ 
private: 
    CvMemStorage *pamiec; 
    CvHaarClassifierCascade * haarface; 
    IplImage *temp2; 
    CvSeq *twarze; 
public: 
    MainWindow(void); 
}; 

Может быть, это что-то не так с XML-файлов?

ответ

0

Вы уверены, что файл haarcascade_frontalface_alt.xml существует в текущем каталоге? Если он не существует, то cvLoad вернет NULL. Используйте полный путь для xml-файла. Кроме того, что такое ошибка 0xc000007b? Не могли бы вы опубликовать полное описание ошибки?

+0

Да, я уверен, что она существует в этом каталоге. «Приложение не запускалось должным образом (0xc000007b). Нажмите« ОК », чтобы закрыть приложение». Когда я строка комментария twarze = cvHaarDetectObjects (TEMP, haarface, хранение, 1,1, 3, CV_HAAR_DO_CANNY_PRUNING, cvSize (100,100)); все работает хорошо. – Marcin

0

Я просто сменил косые черты на обратную косую черту, и он работает;) cvLoad("\haarcascades\haarcascade_frontalface_alt.xml"); EDITED: нормально, он не падает. На самом деле я работаю с версией 2.4.8 o opencv. Проблема с этим кодом - cvHaarDetectObjects, который, кажется, больше не поддерживается. Вместо этого рекомендуется использовать detectMultiScale.