目录
一 . introduction
mat是N维 dense matrix,稀疏matrix 在opencv中是 cv::SparseMat ,常用于histogram中。
下图为灰度图的存储方式;
下图为 RGB 图像的存储方式,注意其存储顺序为 BGR (Blue->Green->Red)
二 .特点
1.组成
Mat包含matrix header 和矩阵指针 pointer to matrix ,
header 如下
int flags; //signaling the context of the matric
int dims; //dimensions
int rows,cols;
//size是一个结构体,定义了Mat矩阵内数据的分布形式,数值上有关系式:
// image.size().width==image.cols; image.size().height==image.rows
MatSize size;
MatStep step;
pointer is shown below;
uchar * data;
2.赋值
1.浅copy
不复制数据,只创建矩阵头,数据共享。(更改a b c任意一个对另外两个都会产生影响)
Mat a;
Mat b=a; //'copy' a to b
Mat c(a); //'copy' a to c
2.深copy
Mat a;
Mat b=a.clone(); //copy a to b
Mat c;
a.copyTo(c) //copy a to b
三 创建
1.type
mat的格式为 CV_{8U, 8S, 16S, 16U, 32S, 32F, 64F}C{1, 2, 3} 或
CV_{8U, 16S, 16U, 32S, 32F, 64F}C