最近開始學習opencv,用的vs2013版的,看到網上有很多圖片讀取的代碼,常見的有Mat img=imread("C:/../1.jpg"),括號裡放的是圖片的路徑,但是有的是寫的Mat img=imread(argv[1],1),而且代碼中從頭到尾也沒有讀取圖片的路徑,請問這是怎麼回事,
首先知道什麼是帶參數的主函數:
一般情況下(許多教科書中都沒有說明),我們在寫程序的時候,往往忽略了主函數的參數,例如:
int main()
{
…
return 0;
}
在命令行下,輸入程序的名稱就可以運行程序了。實際上,我們還可以通過輸入程序名和相關的參數來為程序的運行提供更多的消息。參數緊跟在程序名後面,參數之間用空格分開。
這些參數被稱為:command-line arguments(命令行參數),也往往被稱為程序的argument list(參數表)。例如,在Linux終端,用戶可以輸入ls –l顯示目錄下文件的詳細信息。這個命令中,ls是程序名稱,用戶調用該程序,它有一個輸入參數-l。
main函數通過兩個參數獲取輸入參數表信息,分別是argc和argv。第一個參數是一個整型的變量,它記錄了用戶輸入的參數的個數。第二個參數argv是一個char型的指針數組,它的成員記錄了指向各參數的指針。argv[0]是程序名,argv[1]是第一個參數。
例如:(TC3.0編譯環境,Windows XP)
#include
int main(int argv, char *argc[])
{
printf("/nthe name of the program is %s /n", argc[0]);
printf(" the program has %d argument! /n", argv - 1);
if(argv > 1)
{
int i;
printf("the arguments are:/n");
for(i=1; i<argv; i++)
{
printf("%s/t",argc[i]);
}
}
return 0;
}
當用戶在命令行下輸入:mytest
輸出:
the name of the program D:/WINYES/TCPP30E/OUTPUT/MYTEST.EXT
the program has 0 argument!
當用戶在命令行下輸入:mytest aa bb cc dd e
輸出:
the name of the program D:/WINYES/TCPP30E/OUTPUT/MYTEST.EXT
the program has 5 argument!
The arguments are:
aa bb cc dd e