OpenCV最新版本中的CommandLineParser类
来源:互联网 发布:淘宝卫浴实木柜子 编辑:程序博客网 时间:2024/05/21 23:32
在camshiftdemo.cpp中出现了一个名叫CommandLineParser的类,不知道是干什么用的,查了一下文档才看明白。
关于这个类的实现具体请看:root\opencv\modules\core\src\cmdparser.cpp(root是你安装opencv的位置)
好像在opencv的c版本中,应该是opencv1.0以前,还没有出现CommandLineParser这个类,最近看到opencv2.3后面的版本里自带的samples,很多都用到了CommandLineParser这个类,那么这个类到底有什么作用呢,从命名大概可以猜出这是个命令行解析类。因为我们知道opencv是一个开源库,所以其很少有图形操作方面的api,基本上还是基于命令行执行的。那么这个类的出现主要是方便用户在命令行使用过程中减少工作量,可以在程序文件中直接指定命令行中的参数指令,方便了调试。
我简单写了下面这个例子:
#include "opencv2/video/tracking.hpp"#include "opencv2/imgproc/imgproc.hpp"#include "opencv2/highgui/highgui.hpp"#include <iostream>#include <ctype.h>#include <string>using namespace cv;using namespace std;const char* keys ={ "{ c | camera | 0 | use camera or not}" "{ fn | filename |xxxx.avi | movie file}" "{ t | test | test string | good day!}"};int main(int argc, const char** argv ){ CommandLineParser parser(argc, argv, keys); bool useCamera = parser.get<bool>("c");//括号里写成“camera”也可以 string file = parser.get<string>("fn"); string third = parser.get<string>("t"); //打印输出 cout<<useCamera<<endl; cout<<file<<endl; cout<<third<<endl; cout<<endl; parser.printParams();//CommandLineParser的成员函数,打印全部参数,还有其他成员函数,如:has(),getString()等 return 0;}
运行结果:
第一行就是这个类的构造函数,前2个参数是命令行传过来的,第3个就是刚刚定义的keys了,keys的结构有一定规律,比如说"{ c | camera | 0 | use camera or not}"都是用大括号和双引号引起来,然后中间的内容分成4断,用”|”分隔开,分别表示简称,文件来源,文件值和帮助语句。第二行和第三行表示打开摄像头和打开文件,文件的文件名等都在keys指针中了。
大概可以看出来用这个类的好处就是很方便,因为以前版本没这个类时,如果要运行带参数的.exe,必须在命令行中输入文件路径以及各种参数,并且输入的参数格式要与代码中的if语句判断内容格式一样,一不小心就输错了,很不方便。另外如果想要更改输入格式的话在主函数文件中要相应更改很多地方。现在有了这个类,只需要改keys里面的内容就可以了,并且可以直接运行,不需要cmd命令行带参运行。最后这个类封装了很多函数,可以直接用,只不过这个本来就是类结构的优点。
- OpenCV最新版本中的CommandLineParser类
- OpenCV最新版本中的CommandLineParser类
- OpenCV中CommandLineParser类
- opencv图像处理:CommandLineParser类
- OpenCV中CommandLineParser类的简单理解
- [OpenCV基础] CommandLineParser类的简单理解
- opencv源码解析之:CommandLineParser类的简单理解
- opencv源码解析之(5):CommandLineParser类的简单理解
- opencv源码解析之(5):CommandLineParser类的简单理解
- CommandLineParser
- OpenCV3.0中CommandLineParser类
- CommandLineParser类(命令行解析类)
- 用VC2008编译最新SVN版本的OpenCV源代码
- 利用TortoiseSVN获取最新版本的OpenCV源码
- 【转】用VC2008编译最新SVN版本OpenCV源代码
- 利用TortoiseSVN获取最新版本的OpenCV源码
- 如何在Android中使用OpenCV(最新版本)
- 利用TortoiseSVN获取最新版本的OpenCV源码
- UILabel详解iOS
- java中和金额有关的问题系列
- android contacts数据库操作中的withValueBackReference说明
- Atomikos 中文说明文档
- 数据的格式和验证问题
- OpenCV最新版本中的CommandLineParser类
- linux下查看磁盘空间
- server2008 创建分区表
- 类的练习
- yield(c#)msdn
- 假期后——3.14,工作报告
- 地理位置应用系统
- java的线程的几种状态
- 经典.net面试题目总结