Mat的常见属性
- data:uchar类型的指针。Mat数据结构中Mat的头部和数据部分分开存储,data为指向Mat数据部分的指针。
- dims: Mat矩阵的维度。
- rows, cols: 当dims=2时,rows和cols分别矩阵的行列数。当dims>2时;rows = cols = -1.
- channels():图像的通道数,当图像时由BGR构成时通道数为3,灰度图像的通道数为1.
- type():表明Mat矩阵元素的类型和矩阵的通道数,有一系列的预定义常量组成,命名规则为CV_(位数)(元素类型)(通道数组成),其中U表示无符号整数,S表示有符号整数,F表示浮点数。例如CV_16UC3表示矩阵元素为16位无符号整形,通道数为3。
- depth(): 矩阵中某一通道的元素类型,例如:矩阵为CV_16UC3,则depth为CV_16U。
- elemSize(): 返回矩阵中每个元素所占的字节数,例如:矩阵类型为CV_16UC3,则返回 3*16/8 = 6bytes。
- elemSize1(): 返回每个矩阵元素中单通道所使用的字节数,例如:矩阵类型为CV_16UC3,则返回16/8 = 2bytes。
- u: UMatData类的一个指针,由于Mat A = B时只是复制Mat的头部,数据部分任然是共享的,所以用UMatData类来管理指向Mat数据部分的引用计数,它是一个原子操作。
- size: MatSize的一个实例,保存矩阵各个维度上元素的个数。
- step: MatStep的一个实例,其源代码如下
当dims=2时,p指向buf,buf[0]为矩阵中每一行元素的的字节数,buf[1]为矩阵中每个元素的字节;当dims>2时会为p重新分配空间,并且分配后p中元素的个数和维数相等,p[dims-1]中一直为矩阵中每个元素的字节数。struct CV_EXPORTS MatStep { MatStep(); explicit MatStep(size_t s); const size_t& operator[](int i) const; size_t& operator[](int i); operator size_t() const; MatStep& operator = (size_t s); size_t* p; size_t buf[2]; protected: MatStep& operator = (const MatStep&); };