2015-08-09 23 views
-4

我從openCV2書中複製了這段代碼,這段代碼有argcargv作爲參數,我不知道它們是什麼,爲什麼分配給1(argc=1)並終止調試...我的問題是爲什麼argc=1?我該如何解決它?因爲我argc應該是2(argc==2)...在Visual Studio的openCV編程如果我得到argc = 1我不能加載圖片,我該如何解決它?

#include <stdio.h> 
#include <opencv2/opencv.hpp> 
using namespace cv; 
int main(int argc, char** argv) 
{ 
    if (argc ! = 2) 
    { 
    printf(" usage: DisplayImage.out <Image_Path>\n"); 
    return - 1; 
    } 
    Mat image; 
    image = imread(argv[ 1], 1); 
    if (! image.data) 
    { 
    printf(" No image data \n"); 
    return - 1; 
    } 
    namedWindow(" Display Image" , WINDOW_AUTOSIZE); 
    imshow(" Display Image" , image); 
    waitKey(0); 
    return 0; 
} 

我試着寫了這個代碼,而無需argcargv,但調試器運行時錯誤,我認爲其原因是argc

+1

你必須告訴命令行參數在調試項目屬性中傳遞給main。 –

+1

@saeed masoomi在程序中你要改變什麼?在程序本身中寫明如何運行:「用法:DisplayImage.out \ n」。 –

+0

@saeed masoomi順便說一下,如果確實是一本書的代碼,那麼這本書是不好的。:)雖然至於我,我不讀書。我只看到照片。 –

回答

0

如果通過命令行運行它,你可以把它作爲

DisplayImage "path_to_image" 

如果你想從VS運行,一定要在你的命令參數添加「映像路徑」:

  1. 項目 - >屬性 - >配置屬性 - >調試
  2. 放入命令參數的 「映像路徑」

確保「path_to_image」是有效的路徑,請檢查here以供參考。

正如評論中指出的那樣,這是一個非常糟糕的例子! 對於更復雜的輸入參數,OpenCV 3.0.0也有CommandLineParser

相關問題