OpenCV的命令行参数解析

1. 背景

OpenCV提供了方便的命令行解析方法,一开始看到有点迷茫,经过测试觉得还是挺好用,具体代码如下。 

2. 代码:

#include <opencv2/opencv.hpp>
#include <iostream>
#include <string>

using namespace std;
using namespace cv;

int main(int argc, char** argv)
{
    CommandLineParser parser(argc,argv,
    {
        // 格式:命令  | 默认值 | 提示
        /*对于命令参数有如下细节:
        1. @表示按照顺序出现在exe后面,程序会根据出现顺序赋值给各个变量
        2. 非@参数使用'='运算符,如:fps=60 
        3. 非@参数可以使用-,或--开头,如: -fps或--fps
        4. 同一参数可以有多个别名称对应,如:help h usage ?,四个表达都可以显示帮助信息
        */
        "{help h usage ? |      | print this message   }"
        "{@image1        |1.jpg | image1 for compare   }"
        "{@image2        |2.jpg | 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       }"
     });

    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");

    bool use_time_stamp = parser.has("timestamp");

    String img1 = parser.get<String>(0);
    String img2 = parser.get<String>(1);
    int repeat = parser.get<int>(2);

    cout << "image1:" << img1 << std::endl;
    cout << "image2:" << img2 << endl;
    cout << "repeat:" << repeat << endl;
    cout << "use_time_stamp:" << use_time_stamp << endl;

    cout << "path:" << path << endl;
    cout << "fps:" << fps << endl;
    
    if (!parser.check())
    {
        parser.printErrors();
        return 0;
    }
    return 0;
}

3. 使用测试

testCmdLine.exe 12.jpg 3.jpg 0 --path=D:\tmp -fps=50

4.docs 连接

https://docs.opencv.org/3.0-beta/modules/core/doc/command_line_parser.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是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图生成器

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值