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 2013projectopencv_testdab.jpg

我发现路径中有空格,所以我换了一个路径:G:360downloadsdab.jpg  结果成功了。注意如果有多个参数只需在命令参数中空格隔开即可。

2)打开cmd,找到并进入test.exe的路径后,按这样的格式(路径名 参数)写,以我的为例:  E:visual studio 2013projectSIFT_lps extDebug>text.exe G:360downloadsdab.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]    " "(空字符串)

原文地址:https://www.cnblogs.com/king-lps/p/7745404.html