2013-07-11 78 views
1

我在VC2010中使用opencv,對此我非常熟悉。OPENCV無法在調試模式下打開我的圖像

我今天安裝了OPENCV 2.4.5,並試圖顯示一個圖像來測試我的opencv是否有效。

令人驚訝的是,這段代碼在釋放模式下顯示圖像,但是當我將編譯器模式更改爲調試時,opencv無法找到圖像並返回null圖像數據!

#include <iostream> 
#include <opencv2/highgui/highgui.hpp> 
#include <opencv2/imgproc/imgproc.hpp> 
    int main() 
{ 
    cv::RNG rng; 
    cv::Mat image = cv::imread("1.jpg",-1); 
    cv::imshow("Image",image); 
    cv::waitKey(0); 
return 0; 
    } 

顯示錯誤爲:

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupport 
ed array type) in unknown function, file ..\..\..\src\opencv\modules\core\src\ar 
ray.cpp, line 2482 

我敢肯定,在釋放模式的代碼工作正常,那麼路徑,圖像的名字,一切都很好,但我不知道爲什麼它不能在調試模式下工作。

我也給絕對路徑作爲輸入,它也沒有工作!但再次絕對路徑工作在發佈模式!

值得一提的是,我還在32位和64位的opencv庫上測試了我的項目,問題沒有改變!

+0

如果調試可執行文件是建立在從發佈可執行不同的位置正確的lib名字,則需要將您的映像文件複製到調試版本的目錄中。要麼是,要麼傳遞一個絕對路徑到'imread'。 – Aurelius

+0

@Aurelius我測試了絕對路徑,但它也沒有工作... – PsP

回答

1

您的opencv庫的調試版本可能編譯時不支持「jpg」圖像。此外,請參閱this answer

確保你沒有混淆發佈和調試LIB的OpenCV的,當你鏈接庫。調試庫最後有d個。此外,請確保您使用的是基於您有OpenCV的版本,例如opencv_calib3d245d.lib

+0

你的意思是調試版本?因爲我沒有問題發佈版本 – PsP

+0

是調試版本..我編輯了我的答案 – Alexey

+0

我知道調試和發佈庫在d中有所不同,但這是我的錯,添加「C:\ opencv \ build \ x64 \ vc10 \ lib \ *。lib「在」鏈接器「設置這使VC2010使用該文件夾中可用的所有庫,我認爲這造成了問題!但無論如何感謝 – PsP