OpenCV学习笔记_—— CommandLineParser

10 篇文章 0 订阅
 
Opencv 命令行解析器
class CV_EXPORTS CommandLineParser
{
public:
    CommandLineParser(int argc, const char* const argv[], const String& keys);//构造函数
    CommandLineParser(const CommandLineParser& parser);  //复制构造函数
    CommandLineParser& operator = (const CommandLineParser& parser); //重载符号=
    ~CommandLineParser();//析构函数
    String getPathToApplication() const;//返回应用的地址 argv[0]内容
//返回转换为选定类型的参数。 如果参数未知或者无法转换为指定的类型,设置错误标志
template <typename T>
    T get(const String& name, bool space_delete = true) const
    {
        T val = T();
        getByName(name, space_delete, ParamType<T>::type, (void*)&val);
        return val;
    }

  //brief Access positional arguments by index 通过索引访问参数
    template <typename T>
    T get(int index, bool space_delete = true) const
    {
        T val = T();
        getByIndex(index, space_delete, ParamType<T>::type, (void*)&val);
        return val;
    }

    bool has(const String& name) const;//是否含有指定string name的对象
    bool check() const;//检查解析错误
    void about(const String& message);//设置about信息
    void printMessage() const;//显示帮助信息
    void printErrors() const;//显示错误信息

protected:
    void getByName(const String& name, bool space_delete, int type, void* dst) const;
    void getByIndex(int index, bool space_delete, int type, void* dst) const;

    struct Impl;
    Impl* impl;
};

使用:

const char *keys =
{
	"{help h usage ?||print this message}"
	"{@video||Video file,if not defined try to use webcamera}"
};

为一个命令行解析器做的第一件事是需要定义需要或者允许一个再常字符向量中的参数,每一行的模式为

{name_param|default|value|description}
name_param前可以带有@,定义了这个参数为默认值输入
int main(int argc, const char ** argv)
{
	CommandLineParser parser(argc, argv, keys);    //构造函数获得主函数的输入和之前定义的关键常量
	parser.about("Chapter 2. v1.0.0");
	//如果需要,显示帮助文档
	if (parser.has("help"))                        //检查参数是否存在
	{
		parser.printMessage();
		return 0;
	}
	String videoFile = parser.get<String>(0);        //.get<typename>(parameterName),可以访问和读取任何的输入参数
	//分析params的变量,检查params是否正确
	if (!parser.check())                            //变量是否正确解析
	{
		parser.printErrors();
		return 0;
	}

	...
        ...
	return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值