2012-08-13 117 views
0

我在我的Windows 7 64位使用CodeBlocks,我使用MinGw爲我的默認C/C++編譯器。在Windows 7 64位opencv 2.4錯誤

前幾天我需要使用OpenCV的,之後我掙扎了很多錯誤,我得到unsolveable錯誤是這樣的:

img http://oi49.tinypic.com/xc9hy8.jpg

img2 http://i48.tinypic.com/pwt8j.png

示例代碼:

#include "cv.h" 
#include "highgui.h" 

int main(int argc, char** argv) { 
    IplImage* img = cvLoadImage(argv[1]); 
    cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE); 
    cvShowImage("Example1", img); 
    cvWaitKey(0); 
    cvReleaseImage(&img); 
    cvDestroyWindow("Example1"); 
} 

我相信我的鏈接&目錄設置是正確的。所以,請幫我:)我快要放棄:(

+1

您需要檢查在嘗試顯示圖像之前,cvLoadImage是否成功。 – 2012-08-13 13:52:41

+0

我已經更改爲cvLoadImage(「lena.jpg」);但仍然錯誤。我將lena.jpg放在與Main.exe相同的文件夾中 – psuedobot 2012-08-13 14:26:21

+0

您需要明確檢查cvLoadImage的結果,例如, if(img == NULL){perror(「cvLoadImage failed」);出口(1); }' – 2012-08-13 16:38:22

回答

0

假設你正在做的一切都在代碼和圖像是否正確,這可能是一個問題,由於不兼容的二進制文件的OpenCV。

請有看看a similar installation來編譯看看是否能正常工作我在安裝時遇到了類似的問題,通過再次編譯二進制文件修復了這個問題

+0

該鏈接是32位還是64位?如果32位I成功了,但對於64位,我仍然有問題當我需要運行我的程序(.exe) – psuedobot 2012-08-14 06:19:18

+0

此鏈接是編譯32位的opencv二進制文件,但我一直使用它的Windows的一個64位版本 – masad 2012-08-14 15:38:43

+0

我試過了,但我得到錯誤,當我使用CMake在配置時使用MSYS。您是否嘗試使用Open CV 2.4? – psuedobot 2012-08-15 09:41:00

0

問題是加載圖像時最可能的失敗,但是你只會確定如果您檢查退貨cvLoadImage()

IplImage* img = cvLoadImage(argv[1]); 
if (!img) 
{ 
    printf("!!! cvLoadImage failed\n"); 
} 

如果圖像格式不受支持,或者圖像未在指定位置找到,則該功能失敗。

您應用程序希望加載命令行傳遞的文件,讓你更好地執行應用程序:Main.exe C:\some_img.png

您還可以硬編碼的文件名在代碼:

IplImage* img = cvLoadImage("C:\\some_img.png"); 
if (!img) 
{ 
    printf("!!! cvLoadImage failed\n"); 
}