• opencv学习笔记——cv::CommandLineParser函数详解


    命令行解析类CommandLineParser

    该类的作用主要用于命令行的解析,也就是分解命令行的作用。以前版本没这个类时,如果要运行带参数的.exe,必须在命令行中输入文件路径以及各种参数,并且输入的参数格式要与代码中的if语句判断内容格式一样,很不方便。另外如果想要更改输入格式的话在主函数文件中要相应更改很多地方。现在有了这个类,只需要改keys里面的内容就可以了 。

    在OpenCV源码中,其声明位于头文件 utility中。因此在使用前,一般需要进行头文件包含。

    #include <opencv2/core/utility.hpp>

    类成员

    public:
     CommandLineParser (int argc, const char *const argv[], const String &keys);//构造函数
     CommandLineParser (const CommandLineParser &parser);//拷贝构造函数
     ~CommandLineParser ();//析构函数
     void   about (const String &message);
     bool   check () const;
    
    template<typename T > 
    T   get (const String &name, bool space_delete=true) const;
    template<typename T >
    T   get (int index, bool space_delete=true) const;
    
    String  getPathToApplication () const;
    bool    has (const String &name) const;
    CommandLineParser & operator= (const CommandLineParser &parser);//赋值运算符重载
    void    printErrors () const;
    void    printMessage () const;
    
    protected:
    void    getByIndex (int index, bool space_delete, int type, void *dst) const;
    void    getByName (const String &name, bool space_delete, int type, void *dst) const;
    Impl *  impl;
    
    

    注释的几条函数为常用函数:

    1、构造函数------接收命令行输入的指令

    2、get-----获得指定的参数的内容

    3、has----在get之前可以先检查是否含有此指令

    4、check---在使用这些参数之前,检查是否有解析错误的现象;

    使用示例

    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;
    }
    
    

    Reference
    [1] OpenCV官网
    [2] OpenCV中CommandLineParser类

  • 相关阅读:
    Objective-c Category(类别)
    协议(porotocol)
    类的通用格式
    objective-c 强大的布尔类型
    C 语言函数指针
    c while 循环
    jQuery的deferred对象详解
    exploring the http Object
    div+css定位position详解
    如何给变量取个简短且无歧义的名字
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/9750952.html
Copyright © 2020-2023  润新知