c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)

int main(int argc, char** argv)的解释

最近开始学opencv,看见例程中一直会出现int main(int argc, char** argv)的字样来帮助判断输入参数是否有误,一番查询,大概知其一二,记录一下。
说明:工具为配置了C++的Visual Studio2019(Visual Studio配置opencv3可见分区另一篇博文)

argc和argv

int main(int argc, char** argv):
main函数中接受的参数分别是:

  1. argc代表的是命令行输入的参数的数量,至少为1(argv[0]即.exe文件的路径)。
  2. argv为指针表示的参数, argv[0]表示的是输入命令行的第一个参数,argv[1]表示输入命令行的第二个参数,以此类推。
    命令行参数在程序开始运行的时候会传递给程序,然后根据传入的数量和内容作为参数传递给main函数。
    下面我们通过一个程序来打印一下argc和argv:
#include
using namespace std;
int main(int argc, char** argv)
{
	//命令行输入的参数数量(至少为1)
	cout << "argc=" << argc << endl;
	//第一个参数
	cout << "argv[0]=" << argv[0] << endl;
	//第二个参数
	cout << "argv[1]=" << argv[1] << endl;
	//第三个参数
	cout << "argv[2]=" << argv[2] << endl;
	system("pause");
	return 0;
}

直接运行会在argv[1]那一行报错,因为此时程序只接收到了exe程序所在路径一个参数,参数数量argc = 1
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第1张图片
我们需要通过命令行手动输入参数或者在项目调试中设置命令行参数

方法1:在命令行输入参数

首先进入项目代码生成的exe程序所在的目录,然后在上方目录栏手动输入cmd,按Enter唤起命令行
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第2张图片
在命令行输入程序名称show_argc_argv.exe,后面随便输入两个参数,我这里输入的是 5 和 lol,Enter运行,打印结果如下:
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第3张图片
**argc = 3 **表示命令行输入了三个参数(show_argc_argv.exe,5,lol),下面分别打印出了第一、第二、第三个参数argv[0],argv[1],argv[2]

方法2:在项目中设置命令行参数

打开项目>>>项目属性
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第4张图片
找到调试>>>命令行参数,输入5 lol(空格区分),然后点击确定,运行程序
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第5张图片
打印出程序结果,与方法1类似,唯一区别是这里第一个参数打印的是exe程序所在路径
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第6张图片
————————————————————————————————————————————————————————
更新:Learning Opencv3 例子调试跑通可采用方法2
(Visual Studio配置opencv3可见分区另一篇博文)以Example 2-6为例,c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第7张图片
这里提示命令行需要提供两个参数,并且第二个参数argv[1]是传入imread函数中图片所在路径。如果在命令行没有提供两个参数,会直接return 0程序结束。
根据上面的方法2,只需要在命令行参数输入图片所在路径,注意使用 " \ " 进行分隔
c++中int main(int argc, char** argv)参数解释(Learning Opencv3中例子)_第8张图片
点击确定,便可以成功运行程序,Example 2-6运行结果如下:

你可能感兴趣的:(C++备忘录,opencv,c++,开发语言)