在一些程序中会看到这样的定义
int main(int argc, char **argv) 或
int main(int argc, char *argv [])
这样的写法在一些C\C++会经常看到,现在对这两个参数做一个解释。
在上述代码行中argc表示命令行输入参数的个数(以空白符分隔),argv中存储了所有命令行的参数。这里的命令行不是指在IDE输入什么命令,而是在Windows的DOS和Linux中执行可执行文件时输入的指令。如下程序(Windows版本):
#include <iostream>
#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
using namespace std;
using namespace cv;
int main(int argc, char **argv)
{
if (argc != 2)
{
cout << "输入命令行的参数不正确!" << endl;
return -1;
}
Mat srcImage;
srcImage = imread(argv[1], CV_LOAD_IMAGE_ANYCOLOR);
if (!srcImage.data)
{
cout << "文件为空!" << endl;
return -1;
}
namedWindow("argcargv", WINDOW_AUTOSIZE);
imshow("argcargv", srcImage);
waitKey(0);
return 0;
}
生成解决方案后,不运行,找到工程中的Debug文件夹下会看到有一个.exe执行文件,如我的是argcDOS.exe。将图像文件放入到Debug文件中,打开DOS窗口,进入到.exe文件夹中执行如下操作(以我的文件为例):
结果如下:
在DOS窗口中输入的命令行argcDOS.exe lena.bmp,argc代表是输入命令行个数即在此例中为2,argv[]存储命令内容,在此为argv[0]中存储argcDOS.exe,argv[1]存储lena.bmp。
PS:今天用Windows做的演示,是因为Linux崩溃了,重装中,哭….
更新Linux环境运行方式,不再重复,见截图