2009-01-15 38 views
0
#include "cv.h" 
#include "highgui.h" 
#include <stdio.h> 


int main(int argc, char* argv[]){ 
    cvNamedWindow("Window1", CV_WINDOW_AUTOSIZE); 
    IplImage* image = 0; 
    ->->image = cvLoadImage(argv[1]);<-<- 
    if(!image) printf("Unable to load image!"); 
    cvShowImage("Window1", image); 
    char c = cvWaitKey(0); 
    cvReleaseImage(&image); 
    cvDestroyWindow("Window1"); 
    return 0; 
} 

如果我cvLoadImage("247.png")更換所指示的路線,我得到一個空白的窗口和形象仍然等於零爲什麼OpenCV拒絕cvLoadImage(「string.ext」),但接受cvLoadImage(argv [1])?

如果我運行exe文件,並給它247.png作爲一個參數,它只是花花公子。如果我將「247.png」放入代碼並構建並運行Visual Studio 2008,它將失敗。如果我從命令提示符構建並運行,它將起作用。

這是爲什麼?我沒有感覺到這一點,所以對前進感到厭倦。

+0

您是否嘗試過打印出argv [1]的值來查看實際得到的結果? – freespace 2009-01-15 14:03:28

回答

0

在項目 - >屬性 - >配置屬性 - >調試中有一個字段「工作目錄」。將其設置爲您要執行的目錄,並解決問題。

2

你確定當你的名字是硬編碼時,「247.png」在當前工作目錄下嗎?

在類似Process Monitor之類的地方運行程序,查看真正打開了哪個文件(或者可能存在哪些文件I/O錯誤)。

編輯完成後,向問題添加更多信息(從VS2008運行時出現問題),這幾乎肯定是您的問題。 VS啓動程序的當前目錄不是具有「247.png」文件的目錄。

0

你能檢查一下你的cwd是什麼嗎?

您可以#include <direct.h>並使用_getcwd函數來查看它是什麼。這可能會指向你的罪魁禍首。

相關問題