OpenCV笔记—数据类型

OpenCV学习笔记—数据类型

  • 一、基础类型
    • 1.1 Point类
    • 1.2 Scalar类
    • 1.3 Size类
    • 1.4 Rect
    • 1.5 Matx<>
    • 1.6 Vec<>
    • 1.7 复数类
  • 二、辅助对象
    • 2.1 TermCriteria类
    • 2.2 Range类
    • 2.3 智能指针和垃圾收集
    • 2.4 DataType<>模板
    • 2.5 InputArray和OutputArray类
  • 三、工具函数

一、基础类型

1.1 Point类

Point类是两到三个原语类型的容器,成员通道名称变量访问(mypoint.x , mypoint.y),在使用时通过别名调用Point2i,Point2f。大多数程序中,Ponit是通过Point2f和Point3f来实例化的,支持的操作为
OpenCV笔记—数据类型_第1张图片

1.2 Scalar类

Scalar类一般是双精度四元素向量的别名,与vec<>相同,通过下标访问,Scalar继承自Vec
OpenCV笔记—数据类型_第2张图片

1.3 Size类

Size类与Point类相似,可以与Point类互换,区别在于Point类的数据成员是xy,Size是weight和height。
OpenCV笔记—数据类型_第3张图片

OpenCV笔记—数据类型_第4张图片

1.4 Rect

Rect有Size类的成员weight、height,和Point类的成员x、y。Rect是一个整型数据类型的矩形的别名。
OpenCV笔记—数据类型_第5张图片
也可以计算两个矩阵
在这里插入图片描述
OpenCV笔记—数据类型_第6张图片
RotatedRect类是以左上角为原点的,而Rect以中心为原点
OpenCV笔记—数据类型_第7张图片

1.5 Matx<>

Matx<>为固定矩阵类,用于处理矩阵代数的矩阵,适合一些小型矩阵(22 、33),它在编译时维度已知
OpenCV笔记—数据类型_第8张图片
OpenCV笔记—数据类型_第9张图片
固定向量类继承自固定矩阵类,而其他类的重要操作,要么继承自固定向量类,要么是依赖于转换成固定向量类

1.6 Vec<>

模板类Vec<>即为固定向量类,用于在编译时已经知道维度的小型向量。固定向量模板是列为1的固定矩阵模板。在使用时定义了许多它的别名,例如,Vec2i(两个元素的整型向量),Vec3i,Vec4d等。成员通过下标访问(myvec[0])
OpenCV笔记—数据类型_第10张图片

1.7 复数类

复数类与STL的复数类模板不一样,但与之兼容,STL中数据是通过成员函数real() imag()获取的,而OpenCV中直接通过成员变量re、im获取
OpenCV笔记—数据类型_第11张图片

二、辅助对象

2.1 TermCriteria类

用于提供终止条件,以确定算法何时退出。
构造函数为:TermCriteria(int type,int maxcount,double epsilon)
type用于确定终止条件的类型为COUNT或EPS,COUNT表示达到允许的有限迭代次数,EPS表示某些形式的误差参数下降到一定程度。

2.2 Range类

用于确定一个连续的整数序列,构造函数:Range(iny start ,int end),序列包含初始值,不包含终止值
(0,4)就是0,1,2,3

2.3 智能指针和垃圾收集

智能指针允许我们创建一个对象的引用,把它传递到各处,可以创建多个该对象的引用,这些引用会计数,一旦所有的引用(指针)消失,这个对象将被自动清理。
定义一个指针模板的实例:cv::Ptrp(new cv::Matx33f),这样就拥有了一个智能指针p,可以再创建一个智能指针s,把p值传给s,这两个指针都同时指向一个对象,当p被释放时,s就能够知道自己是仅存的引用,要是s也被释放,就要释放它的原始指针(最后离开教室的人关灯)。
智能指针的一个成员是delete_obj,是引用计数为0时自动调用的函数,可以用它清楚指向的类对象,例如

//使用旧版本的IplImage加载图像
IplImage *img=cvLoadImage(...);

//使用新版本的IplImage加载图像
//这样可以以指针相同的方式使用img,并且在img离开范围时,会自动借助delete_obj释放指针
cv::Ptr img=cvLoadImage("an_imag");

2.4 DataType<>模板

在传递特定数据类型时,可以创建一个DataType<>类的对象

2.5 InputArray和OutputArray类

这两个类型支持所有的数组类型,包括小的数组类型(Scalar,Vec,Matx)和大型数组类型(Mat),不同之处在于前者是常量,只读,后者是可变量。

三、工具函数

OpenCV笔记—数据类型_第12张图片
OpenCV笔记—数据类型_第13张图片

参考文献:学习OpenCV3 中文版

你可能感兴趣的:(OpenCV,opencv)