OpenCV程序main函数参数argc和argv的含义

opencv图像处理 专栏收录该内容
6 篇文章 0 订阅

在刚刚接触到Opencv时,我们常常会在相关的示例程序当中见到argc和argv这两个参数,下面给大家解释一下argc和argv的含义。

argc和argv中的arg指的是"参数"。其中,argc为整数,用来统计运行程序时送给main函数的命令行参数的个数(个人理解是主函数中字符串的个数);argv加上* 与[ ],成为*argv[ ],表示字符串数组,用来存放指向字符串参数的指针数组,每个元素指向一个参数。各成员含义如下:
argv[0]指向程序运行的全路径名;
argv[1]指向执行程序后的第一个字符串;
argv[2]指向执行程序名后的第二个字符串;
argv[3]指向执行程序名后的第三个字符串;
argv[argc]为NULL。
这里所说的程序名后的字符串是在linux终端或windows控制台中用程序名的方式运行程序时在程序名后所加的字符串。这些字符串可以通过在程序中调用argv[]数组实现程序中的直接使用。

argc、argv这两个参数一般在用命令行编译程序时有用。在初学c++时,往往要弱化argc和argv的用法,main函数常常不带参数,如下:

int main()

{

}

而在opencv官方示例程序中,main函数的写法经常会带上两个形参,一般为argc和argv,并且在函数体内部会使用到这两个形参,如下:

int main()

{

const char * imagename = argc >1?argv[1]:“lena.jpg”;

}

其实,在如今各版本的vs编译器中,main()函数带或者不带argc,argv,返回值为void或不为void,都是合法的。

【写法一】返回值为整形带参的main函数

int main(int argc,char** argv)

{

//函数体内使用或者不使用argc和argv都可行

......

return 1;

}

【写法二】返回值为整型不带参的main函数

int main( )

{

......

return 1;

}

【写法三】返回值为void且不带参的main函数

void main()

{

......

}

在Visual Studio中,如果使用了argc或argv,即上文代码的第一种写法,且在使用之前没有在【项目属性】—【配置属性】—【调试】—【命令的参数】中指定参数的值,就会报错:
在这里插入图片描述
如果有多个字符串,则用空格隔开,如:
在这里插入图片描述
想要不报错,除了上文讲过的在项目属性页中填上命令参数外,最简单的做法就是在不影响原始程序的基础上,将argc和argv有关代码进行替换或注释。
比如将Mat srcImage = imread(argv[1], 1);//读取字符串名为argc[1]的图片替换为Mat srcImage = imread("1.jpg", 1);//工程目录下有一张名为“1.jpg”的图片

最后简单来说:

int argc表示命令行字串的个数。

char *argv[ ] 表示命令行参数的字符串。

  • 1
    点赞
  • 0
    评论
  • 5
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

参与评论 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:精致技术 设计师:CSDN官方博客 返回首页

打赏作者

西海岸看日出

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值