OpenCV 学习
Rect 类 (rectangular) 一般用于存图片
成员变量x、y、width、height,分别为左上角点的坐标和矩形的宽和高。
常用的成员函数有:
- Size()返回值为一个Size
- area()返回矩形的面积
- contains(Point)用来判断点是否在矩形内
- inside(Rect)函数判断矩形是否在该矩形内
- tl()返回左上角点坐标 (top left)
- br()返回右下角点坐标 (bottom right)
OpenCV——Mat,IplImage,CvMat类型转换
Mat,cvMat和IplImage这三种类型都可以代表和显示图像,三者区别如下
- Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化。
- 而CvMat和IplImage类型更侧重于“图像”,opencv对其中的图像操作(缩放、单通道提取、图像阈值操作等)进行了优化。IplImage类型与CvMat类型的关系类似于面向对象中的继承关系。实际上,CvMat之上还有一个更抽象的基类----CvArr,这在源代码中会常见。在opencv2.0之前,opencv是完全用C实现的。
1.IplImage
2.CvMat
需要了解,①在OpenCV中没有向量(vector)结构。任何时候需要向量,都只需要一个列矩阵(如果需要一个转置或者共轭向量,则需要一个行矩阵)。②OpenCV矩阵的概念与我们在线性代数课上学习的概念相比,更抽象,尤其是矩阵的元素,并非只能取简单的数值类型,可以是多通道的值。
3.Mat
Mat最大的好处就是能够更加方便的进行内存管理,不再需要程序员手动管理内存的释放。Mat是一个多维的密集数据数组,可以用来处理向量和矩阵、图像、直方图等等常见的多维数据。
- elemSize
- 矩阵一个元素占用的字节数,例如:type是CV_16SC3,那么elemSize = 3 * 16 / 8 = 6 bytes
- elemSize1
- 矩阵元素一个通道占用的字节数,例如:type是CV_16CS3,那么elemSize1 = 16 / 8 = 2 bytes = elemSize / channels
参考资料:
https://www.cnblogs.com/farewell-farewell/archive/2004/01/13/5903464.html