CommandLineParser这个类,那么这个类到底有什么作用呢,从命名大概可以猜出这是个命令行解析类。因为我们知道opencv是一个开源库,所以其很少有图形操作方面的api,基本上还是基于命令行执行的。那么这个类的出现主要是方便用户在命令行使用过程中减少工作量。
大概可以看出来用这个类的好处就是很方便,因为以前版本没这个类时,如果要运行带参数的.exe,必须在命令行中输入文件路径以及各种参数,并且输入的参数格式要与代码中的if语句判断内容格式一样,一不小心就输错了,很不方便。另外如果想要更改输入格式的话在主函数文件中要相应更改很多地方。现在有了这个类,只需要改keys里面的内容就可以了,并且运行时可以直接在vs下用F5,不需要cmd命令行带参运行。最后这个类封装了很多函数,可以直接用,只不过这个本来就是类结构的优点。
CommandLineParser类说明
class CV_EXPORTS CommandLineParser
{
public:
/*
* 函数功能:构造函数
* 参数:
* [in] argc main函数中的第一参数,即运行程序中获得指令的个数
* [in] argv main函数中的第二个参数,即运行程序中指令的内容
* [in] key_map 当启动程序是没有输入任何指令,则使用key_map中默认的指指令。
* 备注:
* key_map中的格式:
* "{ s| 123asd |string parameter}
* { d| 100 |digit parameter }
* { @c| false |without camera }
* { 1| some text |help }
* { 2| 333 |another help }"
*参数or指令名称|指令or参数内容 |指令说明
*
*
* 运行程序输入指令的方式如下:(例如程序名称为extest.exe)
* extest.exe -s=123asdd -d=1000 -@c=10
* 注意:指令名称前面需要加一个“-”,或“--”。当输入指令后面没有参数,默认为true
* 另外,前面加@的指令可以不输入指令名称,直接设置指令内容即可。
* 没有输入的指令,则使用key_map中的默认值
*/
CommandLineParser(int argc, const char* const argv[], const String& keys);
CommandLineParser(const CommandLineParser& parser);
CommandLineParser& operator = (const CommandLineParser& parser);
~CommandLineParser();
String getPathToApplication() const;
/*
* 函数功能:获得指令名称的参数值
* 参数:
* [in] name 指令名称,注意此处不要加"-"
* [in] space_delete 此参数默认为true,把参数内容中的头尾的空格去掉。
*/
template <typename T>
T get