2012-01-13 114 views
0

我正在使用Qt4.8.0和OpenCV2.3.1庫在Visual Studio 2010中製作一個項目。一切都很好,只要我不用OpenCV cvHaarDetectObject錯誤

cvHaarDetectObjects() 

功能。該程序編譯和構建沒有問題,但是當我嘗試運行應用程序時出現錯誤0xc000007b。我在win console中完成了類似的程序,並且此功能正常工作。爲什麼我收到此錯誤消息?我也嘗試使用:

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,storage,1.1,3,CV_HAAR_DO_CANNY_PRUNING,cvSize(100,100));一切都很好。 – Marcin 2012-01-13 22:23:35

0

我只是將斜槓改爲反斜槓,它的工作;)cvLoad("\haarcascades\haarcascade_frontalface_alt.xml"); 編輯:好的,它不崩潰。其實我正在使用2.4.8版本的opencv。這段代碼的問題是cvHaarDetectObjects,似乎不再受支持。建議使用detectMultiScale代替。