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

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值