在看《学习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.exeG:\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] " "(空字符串)