2015-10-26 82 views
0

我目前正在測試一個圖像分割程序,需要以某種方式在主程序中傳遞測試圖像文件,如下所示。一直在尋找。我將非常感謝如何使用或替換測試映像文件中的「argv」並因此生成輸出文件的示例。非常感謝您的指導!使用「argv」傳遞圖像文件C++

http://cs.brown.edu/~pff/segment/[ ^]

int main(int argc, char **argv) { 
    if (argc != 6) { 
    fprintf(stderr, "usage: %s sigma k min input(ppm) output(ppm)\n", argv[0]); 
    return 1; 
    } 

    float sigma = atof(argv[1]); 
    float k = atof(argv[2]); 
    int min_size = atoi(argv[3]); 

    printf("loading input image.\n"); 
    image<rgb> *input = loadPPM(argv[4]); 

    printf("processing\n"); 
    int num_ccs; 
    image<rgb> *seg = segment_image(input, sigma, k, min_size, &num_ccs); 
    savePPM(seg, argv[5]); 

    printf("got %d components\n", num_ccs); 
    printf("done! uff...thats hard work.\n"); 

    return 0; 
} 
+0

我很好奇,你嘗試過什麼,以及它是如何失敗的。 –

+0

如果文件路徑中有空格,應將其與引號一起使用。例如:''path \ to \ file name.ext「' – SHR

+0

Rob Kennedy,我嘗試用圖像文件路徑和argv [5]替換argv [4]與輸出圖像的名稱。我還用示例中給出的值替換了sigma,k和min_size。但是在運行該程序時,這並沒有產生任何輸出圖像文件。它從來沒有得到階段:printf(「得到%d組件\ n」,num_ccs); printf(「done!uff ... that's hard work。\ n」); –

回答

3

只需提供圖像文件作爲參數傳遞給程序的名稱。

a.out 1.0 1.0 100 Input Output

InputOutput是路徑分別輸入圖像和輸出圖像。

更多信息: What does int argc, char *argv[] mean?

+0

我在解決方案資源管理器>配置屬性>調試中右鍵單擊我的項目。在命令參數中輸入: 「C:\ Projects \ segment \ Debug」segment.exe「0.5 500 20 」C:\ Projects \ segment \ segment \ image.ppm「 」C:\ Projects \ segment \段\ output.ppm「 試圖確保我沒有留下任何不必要的空間。 但是,argc = 7時輸出雖然應該是6. 我希望有關如何解決此問題的任何指導,謝謝。 –

+0

@DavidSpears不要將程序作爲參數 – lcs