转自 http://blog.csdn.net/yang_xian521/article/details/7108387

记得我在OpenCV学习笔记(四)——新版本的数据结构core里面讲过新版本的数据结构了,可是我再看这部分的时候,我发现我当时实在是看得太马虎了。对于新版本的数据结构,我再说说。

Point_类不用多言,里面两个成员变量x,y。Point_<int>就是Point2i,也是Point,Point_<float>就是Point2f,Point_<double>就是Point2d。

Point3_类不太常用,跟Point_类差不太多,成员变量x,y,z。

Size_类成员变量width、height。Size_<int>就是Size2i,也是Size,Size_<float>就是Size2f,大家就要不臆断出来个Size2d啥的让编译器发懵了。

Rect_类有些意思,成员变量x、y、width、height,分别为左上角点的坐标和矩形的宽和高。常用的成员函数有Size()返回值为一个Size,area()返回矩形的面积,contains(Point)用来判断点是否在矩形内,inside(Rect)函数判断矩形是否在该矩形内,tl()返回左上角点坐标,br()返回右下角点坐标。值得注意的是,如果想求两个矩形的交集,并集,可以用如下格式

  1. Rect rect = rect1 & rect2;
  2. Rect rect = rect1 | rect2;

如果想让矩形平移操作,缩放操作,甚至可以这样写

  1. Rect rectShift = rect + point;
  2. Rect rectScale = rect + size;

是不是很妙,可以大大减轻你的代码量。

Matx其实是个轻量级的Mat,必须在使用前规定好大小,比如一个2*3的float型的可以声明为Matx23f。我想很容易理解的。

Vec是Matx的一个派生类,就是一个1维的Matx,跟vector很相似。比如想声明一个10个数据的float数组,可以写成Vec2f。

这样就很容易引出一个大家经常使用的数据结构了,Scalar_类,这个类其实就是一个Vec4x的一个变种,大家常用的Scalar其实就是Scalar_<double>。这样一说,大家是不是就很容易理解了,为啥很多函数的参数输入可以是Mat,也可以是Scalar了。其实OpenCV定义的InputMat,outputMat参数格式,以上的这几种数据结构都可以作为参数的。

接下来介绍一个有意思的类Range,大家可能用的不多,对它不熟悉,其实它就是为了使OpenCV的使用更像Matlab而产生的。比如Range::all()其实就是Matlab里的符号:或者...。而Range(a, b)其实就是Matlab中的a:b。有趣吧,注意a,b都需要是int型的哦,亲。

Ptr类我就不太敢介绍了,是智能指针,我也没有用过,文档里说是很类似大名鼎鼎的Boost库里的shared_ptr。希望以后有机会用一下再拿出来分享心得。

最后出场的还是最重量级的Mat,介绍几个比较重要的成员变量flag(就是我之前说过的header里的结构信息,深度信息,通道数),dims是Mat的维数,要求大于等于2,rows和cols参数代表2维矩阵的行数列数(对于更高维的矩阵,这两个参数都是-1),还有个比较常用的参数应该uchar* data,是Mat的数据指针(比较暴力的同学可以直接调用它好了,不推荐),还有个参数refconst,我理解应该就是我上一讲提到的释放内存的时候要判断这个矩阵是否是最后一个被使用的,这个参数应该就是控制跟当前矩阵结构相关的个数的。

最新文章

  1. git配置笔记
  2. 论垃圾邮件危害性及U-Mail邮件系统必杀技
  3. C++ c++与C语言的区别(实用性增强,register关键字增强,全局变量检测增强)
  4. SSH_框架整合5--验证用户名是否可用
  5. Ubuntu下安装nvidia显卡驱动
  6. ES5数组方法
  7. HttpWebRequest上传文件(Excel等)
  8. windows如何获取Win10 Win8 Win8.1版本
  9. TCP/IP笔记 三.运输层(3)——TCP超时重传算法
  10. javascript集合的交,并,补,子集,长度,新增,删除,清空等操作
  11. [HNOI 2003]消防局的设立
  12. [Swift]LeetCode1023. 驼峰式匹配 | Camelcase Matching
  13. Codeforces Round #509 (Div. 2)
  14. android 百度地图 定位获取位置失败 62错误
  15. HDU2035
  16. asp.net core mvc发布后显示异常错误信息的方法
  17. django之用户表的继承
  18. P1865 A % B Problem 素数筛
  19. Android应用开发-Activity
  20. [转]Format a ui-grid grid column as currency

热门文章

  1. Hibernate(1)
  2. php 中改变字符编码的函数 是 iconv()
  3. unity编译android包时提示android sdk路径有问题
  4. linux下使用fstat来计算文件的大小
  5. 使用POI导出excel基础篇
  6. 备份Ubuntu系统
  7. AngularJS:路由
  8. AngularJS:输入验证
  9. Flash在线签名小程序,可回放,动态导出gif图片
  10. 解决django不能以本机ip地址访问