CommandLineParser类(命令行解析类)

CommandLineParser类(命令行解析类)

该类用于命令行解析。主要是为了方便用户在命令行使用过程中减少工作量,可以在程序文件中直接指定命令行中的参数指令,不用再在命令行中输入参数或者说可以把一些固定的参数放在这个类里,常变的在命令行中输入。

构造

cv::CommandLineParser::CommandLineParser( int argc, 
                                          const char *const  argv[], 
                                          const String & keys )
  1. argc:命令行参数的数量
  2. argv:命令行参数的数组
  3. 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
  1. name:参数的名称
  2. 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)
  1. index:参数的索引
  2. space_delete:从字符串左边和右边删去空格

返回已被转换成指定类型的参数。位置索引从0开始编号。
举例如下:

String keys = "{@arg1||}{@arg2||}"
String val_1 = parser.get<String>(0); // returns "abc", arg1
String 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;
}
  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是OpenCV库的所有(按字母顺序排序): - cv::Algorithm:OpenCV算法的基 - cv::BFMatcher:基于暴力匹配的特征匹配算法 - cv::BackgroundSubtractor:背景减法算法的基 - cv::CalibrateCRF:相机响应函数校准算法 - cv::CalibrateDebevec:Debevec反演算法 - cv::CalibrateRobertson:Robertson反演算法 - cv::CascadeClassifier:级联分器 - cv::CommandLineParser命令行参数解析器 - cv::DescriptorMatcher:特征描述子匹配器的基 - cv::FastFeatureDetector:FAST特征检测器 - cv::FileNode:文件节点,用于读取和写入XML/YAML文件 - cv::FileStorage:文件存储,用于读取和写入XML/YAML文件 - cv::FlannBasedMatcher:基于FLANN的特征匹配算法 - cv::GFTTDetector:GFTT特征检测器 - cv::HOGDescriptor:HOG特征描述子 - cv::KAZE:KAZE特征检测器和描述子提取器 - cv::KeyPoint:关键点 - cv::MSER:MSER特征检测器 - cv::Mat:矩阵 - cv::MatOfByte:字节型矩阵 - cv::MatOfDMatch:特征匹配结果矩阵 - cv::MatOfFloat:单精度浮点型矩阵 - cv::MatOfFloat4:四元组单精度浮点型矩阵 - cv::MatOfInt:整型矩阵 - cv::MatOfKeyPoint:关键点矩阵 - cv::MatOfPoint:点矩阵 - cv::MatOfPoint2f:二维点矩阵 - cv::MatOfPoint3f:三维点矩阵 - cv::MatOfRect:矩形矩阵 - cv::MatOfRotatedRect:旋转矩形矩阵 - cv::MatOfUChar:无符号字符型矩阵 - cv::Mat_<T>:模板矩阵,用于存储T型的数据 - cv::ORB:ORB特征检测器和描述子提取器 - cv::PCA:主成分分析算法 - cv::RQDecomp3x3:QR分解算法 - cv::Rect:矩形 - cv::RotatedRect:旋转矩形 - cv::SimpleBlobDetector:简单的Blob检测器 - cv::StereoBM:基于块匹配的立体视觉算法 - cv::StereoSGBM:基于半全局匹配的立体视觉算法 - cv::TermCriteria:停止准则 - cv::Tracker:目标跟踪器的基 - cv::UMat:统一内存矩阵,用于在CPU和GPU之间共享数据 - cv::VideoCapture:视频捕获 - cv::VideoWriter:视频写入 - cv::VoronoiDiagramGenerator:Voronoi图生成器

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值