1,定义:
Mat用来存储多维矩阵的数组,能够动态的管理内存,代替了之前c语言写的lplimage这个存储结构。矩阵数据结构分为两部分,一部分是数据头,存储着矩阵首地址,存储方式,大小等信息,这部分大小固定;二部分是数据部分,都是像素值,根据图像深度不同,像素值取值范围不同。
2,基本属性:
data:就是数组内的每一个元素,data本身是一个指针, 指向矩阵数据。
dims:矩阵的维数,3*4*5的矩阵就是三维矩阵,dims=3
rows:矩阵行数
cols:矩阵列数
channels:图像通道数。所谓通道,通俗的讲就是一个元素由几个数字表示。比如在RGB颜色空间中,一个像素由(0,0,255)类似于这样的值构成,这个图像就是三通道的。再比如灰度图,灰度图的灰度由0~255之间的数字表示,所以是单通道,也有三通道的灰度图,只不过三个通道的数值相等。
type:他是一系列数值,表示了矩阵中元素的类型、通道个数。但是不直接使用数值来表示type,而是使用命名规则。如CV_(位数)+(数据类型)+(通道个数),位数包括额数值有8、16、32、64。数据类型U表示无符号整数,S代表有符号整数,F代表浮点数。通道数用C1、C2、C3、C4表示。
depth:表示一个通道的数据类型。也是一系列预定的值。CV_8UC3,表示3通道,每个通道表示数8位无符号整数。