OpenCV学习笔记_—— CommandLineParser

1人阅读 评论(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;

}

查看评论

OpenCV3.0中CommandLineParser类

OpenCV中CommandLineParse类主要是命令行解析类。 OpenCV中出现此类的主要目:方便用户在命令行使用过程中减少工作量。具体使用方式如下: const String keys ...
  • chaihuimin
  • chaihuimin
  • 2017-04-24 20:18:14
  • 1363

OpenCV中CommandLineParser类

OpenCV中CommandLineParser类OpenCV中CommandLineParse类主要是命令行解析类。OpenCV中出现此类的主要目:方便用户在命令行使用过程中减少工作量。具体使用方式...
  • yzhang6_10
  • yzhang6_10
  • 2016-04-06 13:59:21
  • 5439

[OpenCV基础] CommandLineParser类的简单理解

原文转自:http://www.cnblogs.com/tornadomeet/archive/2012/04/15/2450505.html 好像在opencv的c版本中,应该是openc...
  • u010013164
  • u010013164
  • 2014-08-07 16:41:10
  • 742

opencv源码解析之(5):CommandLineParser类的简单理解

http://www.cnblogs.com/tornadomeet opencv2.3后面的版本里自带的samples,很多都用到了CommandLineParser。这个类,那么...
  • cocoyilu
  • cocoyilu
  • 2015-10-28 16:04:56
  • 416

oepncv CommandLineParser

好像在opencv的c版本中,应该是opencv1.0以前,还没有出现CommandLineParser这个类,最近看到opencv2.3后面的版本里自带的samples,很多都用到了CommandL...
  • yeyang911
  • yeyang911
  • 2014-01-01 13:08:52
  • 1713

c#借助CommandLineParser写命令行工具

c#借助CommandLineParser写命令行工具
  • chenjian0415
  • chenjian0415
  • 2016-01-11 14:27:08
  • 1562

c#命令行解析实例CommandLineParser

  • 2012年09月15日 09:44
  • 1.18MB
  • 下载

OpenCV学习笔记大集锦

转载自: OpenCV学习笔记大集锦 – 视觉机器人 http://www.cvrobot.net/collect-opencv-resource-learn-study-note-chinese...
  • qq_26898461
  • qq_26898461
  • 2016-01-06 09:49:53
  • 1638

CommandLineParser使用

写win32程序会遇到这种尴尬: 程序需要传参进main,可是调试的时候改起来很麻烦,一种方法是调试时直接一进到就给argc、argv赋值,发布时屏蔽;第二种方法是vs带参数输入,不过修改很麻烦。 ...
  • bcfd_yundou
  • bcfd_yundou
  • 2017-02-23 11:00:24
  • 149

OpenCV学习笔记(五)

基础图像容器Mat的相关概念一、 Mat是一个类,有两个数据部分组成:矩阵头(包含矩阵尺寸、存储方法、存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同,矩阵可以是不同的维数)的...
  • asher__zhou
  • asher__zhou
  • 2016-08-11 22:12:46
  • 1154
    个人资料
    等级:
    访问量: 530
    积分: 115
    排名: 142万+
    文章存档