argv[1] 路徑問題
在看《學習opencv》一書時遇到一個小問題:函式只是通過argv傳遞引數來讀取圖片並顯示,但是卻一直彈出畫布,沒有影象。
如下:test.c
# include<stdio.h>
#include <opencv/cv.h>
#include <opencv/cxcore.h>
#include <opencv/highgui.h>
int main(int argc, char **argv) { IplImage *img = cvLoadImage( argv[1],1); cvNamedWindow("Example", CV_WINDOW_AUTOSIZE); cvShowImage("Example", img); cvWaitKey(0); cvReleaseImage(&img); cvDestroyWindow("Example"); return 0; }
使用 argv[1]傳參的方法有兩種
1)點選專案——某某屬性——除錯——命令引數——寫入呼叫的圖片的地址,我的路徑是:E:\visual studio 2013\project\opencv_test\dab.jpg
我發現路徑中有空格,所以我換了一個路徑:G:\360downloads\dab.jpg 結果成功了。注意如果有多個引數只需在命令引數中空格隔開即可。
2)開啟cmd,找到並進入test.exe的路徑後,按這樣的格式(路徑名 引數)寫,以我的為例: E:\visual studio 2013\project\SIFT_lps\text\Debug>text.exe
注:
cvLoadImage( filename, -1 ); 預設讀取影象的原通道數
cvLoadImage( filename, 0 ); 強制轉化讀取影象為灰度圖
cvLoadImage( filename, 1 ); 讀取彩色圖
補充:對於main函式原型: int main(int argc, char*argv[]), 形參argc和argv為main函式提供了命令列引數的機制。拿上文中的test.exe為例
終端(win下)中執行 text.exe opt1 opt2 opt3 會導致main中出現如下的行引數值:
argc 4 argv[0] "test.exe"
argv[1] "opt1"
argv[2] "opt2"
argv[3] "opt3"
argv[4] " "(空字串)