CommandLineParser类(命令行解析类)
来源:互联网 发布:网络销售没经验怎么办 编辑:程序博客网 时间:2024/06/06 06:43
CommandLineParser类(命令行解析类)
该类用于命令行解析。主要是为了方便用户在命令行使用过程中减少工作量,可以在程序文件中直接指定命令行中的参数指令,不用再在命令行中输入参数或者说可以把一些固定的参数放在这个类里,常变的在命令行中输入。
构造
cv::CommandLineParser::CommandLineParser( int argc, const char *const argv[], const String & keys )
- argc:命令行参数的数量
- argv:命令行参数的数组
- keys:描述可接受的命令行参数的字符串
keys是一个字符串,包含多个块,每一个都被装在大括号里且描述一个参数。每个参数都被“ | ”符号分隔成三部分。
第一部分是参数名称。
第二部分是参数的默认值,可以为空。
第三部分是描述该参数的帮助信息,可以为空。
如下:
const String keys ="{help h usage ? | | print this message }""{@image1 | | image1 for compare }""{@image2 | | image2 for compare }""{@repeat |1 | number }""{path |. | path to file }""{fps | -1.0 | fps for output video }""{N count |100 | count of objects }""{ts timestamp | | use time stamp }";}
设置相关信息
void cv::CommandLineParser::about(const String & message)
设置相关信息。相关信息会在 printMessage 被调用时显示。
查错
bool cv::CommandLineParser::check()const
检查解析错误。
当错误发生时返回true。错误可能是转换错误、丢失参数等。
获得keys中的参数信息
通过名称得到参数
template<typename T >T cv::CommandLineParser::get( const String &name, bool space_delete=true ) const
- name:参数的名称
- space_delete:从字符串左边和右边删去空格
返回已被转换成指定类型的参数。
如果参数未知或不能转换,则错误标志建立,可被check()检查到。
举例如下:
String keys = "{N count||}";int N = parser.get<int>("N");
通过位置索引得到参数
template<typename T >T cv::CommandLineParser::get( int index, bool space_delete = true)
- index:参数的索引
- space_delete:从字符串左边和右边删去空格
返回已被转换成指定类型的参数。位置索引从0开始编号。
举例如下:
String keys = "{@arg1||}{@arg2||}"String val_1 = parser.get<String>(0); // returns "abc", arg1String val_2 = parser.get<String>(1); // returns "qwe", arg2
打印帮助信息
void cv::CommandLineParser::printMessage()const
打印包括相关信息在内的帮助信息。
检查是否有某字段
bool cv::CommandLineParser::has(const String &name)const
检查name是否在参数中被提供。
示例:
const String keys ="{help h usage ? | | print this message }""{@image1 | | image1 for compare }""{@image2 | | image2 for compare }""{@repeat |1 | number }""{path |. | path to file }""{fps | -1.0 | fps for output video }""{N count |100 | count of objects }""{ts timestamp | | use time stamp }";}CommandLineParser parser(argc, argv, keys);parser.about("Application name v1.0.0");if (parser.has("help")){ parser.printMessage(); return 0;}int N = parser.get<int>("N");double fps = parser.get<double>("fps");String path = parser.get<String>("path");use_time_stamp = parser.has("timestamp");String img1 = parser.get<String>(0);String img2 = parser.get<String>(1);int repeat = parser.get<int>(2);if (!parser.check()){ parser.printErrors(); return 0;}
阅读全文
0 0
- CommandLineParser类(命令行解析类)
- OpenCV中CommandLineParser类
- opencv源码解析之:CommandLineParser类的简单理解
- opencv源码解析之(5):CommandLineParser类的简单理解
- opencv源码解析之(5):CommandLineParser类的简单理解
- OpenCV3.0中CommandLineParser类
- opencv图像处理:CommandLineParser类
- OpenCV最新版本中的CommandLineParser类
- OpenCV最新版本中的CommandLineParser类
- OpenCV中CommandLineParser类的简单理解
- [OpenCV基础] CommandLineParser类的简单理解
- CommandLineParser
- c#借助CommandLineParser写命令行工具
- 一个不错的命令行解析类
- 解析命令行参数-ACE_Get_Opt类的用法
- python命令行参数解析OptionParser类
- PHP 命令行参数解析工具类
- 一个简单的命令行解析类
- 1017. A除以B (20)
- IFrame自适应内容高度
- JPA规范
- EA&UML日拱一卒-活动图::Object actions(续)
- goldengate 一些参数整理
- CommandLineParser类(命令行解析类)
- 实习日志2
- 任意数求和(不限传递实参个数,都可以求和 对非有效数字的实参值进行规避 在函数外面可以使用求和的结果)
- CentOS7(64位)查看CPU和NVIDIA显卡温度
- (十二)Path 及贝塞尔曲线
- Linux —— Vim错误 E37:No write since last change(add!to override)
- mybatis入门字段与属性不对应问题(三)
- java基础之线程
- 事件