2011-09-29 122 views
6

我想在OpenCV \ Samples \ C文件夾,在Visual Studio 2010中編譯facedetect.cpp。項目編譯並開始就好,顯示我的相機預覽,然後當它檢測到一張臉時,它就會在cascade.detectMultiScale()中崩潰。我認爲OpenCV認爲我太醜陋了。OpenCV 2.1:facedetect.cpp崩潰時,它發現醜陋的臉

Unhandled exception at 0x100342bf in HeadTrackerExample.exe: 0xC0000005: Access violation writing location 0x00000000.

不幸的是,調試信息並不讓我更深層次的探討。我鏈接到cv210.lib; cxcore210.lib; highgui210.lib;調試版本將無法正常工作:

LDR: LdrpWalkImportDescriptor() failed to probe D:\OpenCV2.1\bin\cv210d.dll for its manifest, ntstatus 0xc0150002

我要去嘗試欺騙與安妮·海瑟薇的打印輸出的分類,但我接受其他的建議。

https://code.ros.org/trac/opencv/browser/trunk/opencv/samples/c/facedetect.cpp

+2

有沒有線索,但有+1的幽默感。 –

+0

您可以向我們展示代碼,以便我們看到您對'cascade.detectMultiScale()'的調用?或者代碼太醜陋了? :-) – SSteve

+0

現在代碼已經鏈接到問題中了!正如你所看到的,它只是包含的示例代碼,所以也許我的系統或我的項目配置有問題。 –

回答

0

我花了一天的時間來解決這個問題。誰知道它爲什麼會崩潰?我無法鏈接到調試DLL,所以我們永遠不會知道。我下載了OpenCV-2.1.0-win32-vs2008.exe發行版。而我使用Visual Studio 2010中。因此,該exe與

LDR: LdrpWalkImportDescriptor() failed to probe D:\OpenCV2.1\bin\cv210d.dll for its manifest, ntstatus 0xc0150002 Debugger:: An unhandled non-continuable exception was thrown during process load The program '[5172] HeadTrackerExample.exe: Native' has exited with code -1072365566 (0xc0150002).

崩潰這是 「0xc0150002錯誤」。根據Dependency Walker的說法,OpenCV調試DLL試圖找到msvcr90d.dll和msvct90d.dll,即Visual Studio 2008調試運行時DLL。那麼,我獲得了這些,它仍然沒有工作,所以這進入深奧的Windows sidebyside和清單的東西。

我切換到OpenCV-2.3.1-win-superpack.exe發行版,它現在正在工作。

1

我想我更好看的比你,因爲它是在這裏工作(在OS X)。你確定你已經成功加載了xml文件嗎?您是否使用默認的xml文件(haarcascade_frontalface_alt.xml和haarcascade_eye_tree_eyeglasses.xml)?

它肯定看起來像你有一個空指針。嘗試在調用cascade.detectMultiScale()時設置斷點並檢查cascade,smallImg,smallImg.datafaces的值。

編輯:填充faces矢量

這裏的detectMultiScale代碼:所有檢測完成後,直到最後一行之後

void HaarClassifierCascade::detectMultiScale(const Mat& image, 
         Vector<Rect>& objects, double scaleFactor, 
         int minNeighbors, int flags, 
         Size minSize) 
{ 
    MemStorage storage(cvCreateMemStorage(0)); 
    CvMat _image = image; 
    CvSeq* _objects = cvHaarDetectObjects(&_image, cascade, storage, scaleFactor, 
              minNeighbors, flags, minSize); 
    Seq<Rect>(_objects).copyTo(objects); 
} 

它不觸及faces載體。如果您喜歡冒險,可以在這裏拋出一些printf聲明,看看cvHaarDetectObjects是否正在完成,以及它是否返回空指針。

+0

是的,XML加載罰款。好的調試技巧,我會嘗試。但是,detectMultiScale調用會成功完成,直到它找到一個表面,這讓我認爲在嘗試填充「faces」向量時存在問題(通過引用訪問) –