类 Mat导言 OpenCV c + + n 维稠密数组类 类 CV_EXPORTS Mat { public: / / … … 很多的方法
包括几位字段: -神奇的签名 -连续性标志 -深度(Note:应该是位深) -通道数 */ int flags;(Note :目前还不知道flags 做什么用的) //
数组的维数,> = 2 int dims ; //
行和列的数量或 (-1,-1) 此时数组已超过 2 维 int rows,cols; //
指向数据的指针 uchar *data ; //
指针的引用计数器; / / 阵列指向用户分配的数据时,当指针为 NULL int * refcount ; / / 其他成员
}; Mat 类表示一个 n 维的密集数值单通道或多通道数组
它可以用于存储实数或复数值的向量和矩阵、灰度或彩色图像、体素、向量场、点云、张量、直方图(尽管较高维的直方图存储在 SparseMat 可能更好)
M 数组的数据布局是由阵列 M
step[]定义的,使元素的地址(i0,
dims-1),其中 0 =M
step[i+1] (事实上,M
step[i] > =M
step[i+1]*M
size[i+1])
这意味着2 维矩阵是按行存储的,3 维矩阵是由平面存储,以此类推
step[M
dims-1] 是最小的而且总是等于元素大小M
elemSize()
因此,Mat 中的数据布局完全兼容OpenCV 1
x 中CvMat、 IplImage、 CvMatND 类型
它也和标准工具包和 SDK,如 Numpy(ndarray),Win32(独立设备位图)等主流的密集数组类型相兼容,也就是说,与任何使用步进(或步长)来计算像素位置的阵列相兼容
由于这种兼容性,使用户分配的数据创建 Mat 头以及用Ope