2012-08-14 117 views
2

我是OpenCV的新手,想問一個關於加載圖像的基本問題。OpenCV - cvLoadImage()無法加載JPG圖像

我在windows7上使用OpenCV2.0和Visual Studio 2008。

從我讀和理解有「cvLoadImage()」函數加載OpenCV中的圖像。

我目前嘗試非常基本的程序來加載和顯示窗口中的圖片。

這是我的代碼:

#include "stdafx.h" 
#include <cv.h> 
#include <highgui.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    IplImage* img = cvLoadImage("C:/hello.jpg"); 

    if (!img) 
    printf("Image can NOT Load!!!\n"); 

    cvNamedWindow("myfirstwindow"); 
    cvShowImage("myfirstwindow", img); 

    cvWaitKey(0); 
    cvReleaseImage(&img); 

return 0; 
} 

結果是我可以用灰色的窗口,但在拍攝時不顯示。 我曾嘗試其他解決方案,如將圖像放在項目文件夾中,然後調用它,但仍然有相同的結果。

但是,當我試圖使用其他類型的圖像,如PNG它成功加載。

有沒有人以前有過相同的問題,或知道任何解決方案來解決這個問題?

感謝,

-jwiil-

+0

嘗試'「C:\\ hello.jpg」' – Sam 2012-08-14 14:01:24

+0

我已經試過這種情況,但仍然無法正常工作.. 但是,如果我使用其他類型的文件,如PNG,一切工作正常.. – jwiil 2012-08-14 16:20:28

+0

你應該給我們一些我們可以理解的情況。例如,您可能會給我們正在處理的jpg圖像。我認爲你的jpg圖像可能有問題。你是否嘗試過不同來源的不同jpgs?另一件事是難以安裝opencv的可能性很小。 – 2012-08-14 19:08:22

回答

1

這是因爲你是給你的程序的路徑實際上並沒有對任何指向。

如果你是把圖像在同一文件夾,那麼你需要調用

cvLoadImage("hello.jpg"); 

如果圖像是其他地方那麼作爲@vasile評論你需要調用

cvLoadImage("C:\\hello.jpg"); 

而且我已編輯您的代碼,以便在圖像未正確加載時退出

#include "stdafx.h" 
#include <cv.h> 
#include <highgui.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    IplImage* img = cvLoadImage("C:/hello.jpg"); 

    if (!img) 
    { 
    printf("Image can NOT Load!!!\n"); 
    return 1; 
    } 

    cvNamedWindow("myfirstwindow"); 
    cvShowImage("myfirstwindow", img); 

    cvWaitKey(0); 
    cvReleaseImage(&img); 

return 0; 
} 
+0

Thx爲answ,我已經嘗試過您的解決方案,但沒有爲JPG類型文件工作,但爲其他類型(如PNG)工作。 即使我嘗試了一些其他組合,如「C:/hello.jpg」或將「hello.jpg」放在我的工作項目目錄中,然後直接調用。但仍然沒有工作。 – jwiil 2012-08-14 16:00:21

+1

如果你能夠加載其他格式然後JPG格式,然後你想要打開的圖像不是一個好的副本,或者你的opencv二進制文件有問題。嘗試在您想要使用它的系統上從源代碼重新編譯opencv。 – masad 2012-08-14 19:14:23

+0

並且還使用最新的opencv版本,因爲以前版本中的大多數bug在新版本中得到修復 – masad 2012-08-14 19:16:08