2013-04-05 135 views
3

我正在嘗試在這裏找到的基本教程http://bsd-noobz.com/opencv-guide/40-1-load-and-display-an-image,它可以處理加載和顯示圖像。我在Visual Studio 2012中做到這一點。OpenCV無法找到圖像

我已經將圖像文件「lena.png」放在exe文件旁邊的Debug文件夾中。當我嘗試從終端執行exe文件時,它只會回覆「無法加載圖像!」。我也在Release文件夾中嘗試了這一結果。

這是我對節目的代碼:

#include <opencv2/highgui/highgui.hpp> 
#include <iostream> 

using namespace cv; 
using namespace std; 

int main(int argc, char** argv) 
{ 
    if(argc > 1){ 
     cout << argv[1] << endl; 
    } 

    Mat img = imread("lena.png", CV_LOAD_IMAGE_COLOR); 

    if (img.empty()) 
    { 
     cout << "Cannot load image!" << endl; 
     return -1; 
    } 

    namedWindow("image", CV_WINDOW_AUTOSIZE); 
    imshow("image", img); 
    waitKey(0); 

    return 0; 
} 

我不明白爲什麼這個hapens,圖片是在同一目錄中的.exe和我下面的示例代碼的信。請幫我理解爲什麼它找不到該文件!編號: HAHAHAHAHA我修好了。在憤怒的情況下,我將* .lib的所有附加依賴項更改爲* d.lib,因爲我正在運行調試版本並且工作正常。如果我閱讀關於如何使用opencv的教程,它說有一個區別,但自編譯以來,我認爲它會起作用。我現在要嘗試發佈版本,看看它是否有效(當然還有更改依賴關係)。

編輯2: 是的,它的工作。因此,對於我自己的問題的答案是,您需要鏈接來自include文件夾的正確.lib文件作爲調試版本和發行版本的依賴關係。以「d」結尾進行調試,其他進行調試。現在可能不會那麼令人驚訝,我發現了問題,但它確實存在。

+0

最有可能你的形象比爲png – 2013-04-05 07:35:53

+0

嘗試把圖像解決方案文件夾等其他格式的。(其中*。 cpp文件) – mrgloom 2013-04-05 07:36:47

+0

我嘗試了兩個建議,但得到了相同的結果。我真的被這個難住了。 – mpals 2013-04-05 07:54:07

回答

0

也許它與imread的文件格式有關。嘗試用.jpg或任何從here formats.To報價有效圖像,

The function imread loads an image from the specified file and returns it. If the image can not be read (because of missing file, improper permissions, unsupported or invalid format), the function returns empty matrix (Mat::data==NULL).

+0

我嘗試使用.jpg和.bmp,但結果仍然相同。我也嘗試將圖片放在解決方案目錄中,使用.cpp文件,但無濟於事。 – mpals 2013-04-05 07:53:21

+0

它可能與權限有關,如在鏈接的頁面中所述的那樣?我通常使用Linux,所以我不知道如何檢查我在Windows中有讀寫權限。 – mpals 2013-04-05 07:56:20

+0

好吧,看起來像圖片允許系統做它喜歡它。 Visual Studio是否需要某種權限才能編輯圖片? – mpals 2013-04-05 08:02:23