在看《學習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 G:\360downloads\dab.jpg
注:
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] " "(空字符串)