zoukankan      html  css  js  c++  java
  • 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类

  • 相关阅读:
    码农提高工作效率-黄博文
    myeclipse与tomcat,运行jsp程序
    Ultraedit和写字板修改Tomcat 6.0的server.xml不生效
    MySQL5.5.33对应的JDBC驱动包怎样使用?
    Java是用JDBC连接MySQL数据库
    myeclipse trial expired暂时解决办法
    Json数据使用及学习方法
    在C#中使用json字符串
    vs2012换肤功能,vs2012主题及自定义主题
    给Notepad++换主题
  • 原文地址:https://www.cnblogs.com/feifanrensheng/p/9750952.html
Copyright © 2011-2022 走看看