Mat是OpenCV指定的资料形态,代表的是矩阵(Martrix)前三个字母,影像其实也可以 看成某个二维阵列,所以在OpenCV2.0里不论矩阵计算或是影像处理的格式,都是以mat类别进行处理,并有想断的成员变数和函数方便使用,使用时不用考虑内存管理,这也是OpenCV 1.0和2.0不同之处,这边介绍常用的Mat类别成员和成员函数,包括如何得到影像资讯、创建影像、复制影像、改变位元深度和操作像素强度。
影像资讯
Mat最基本有长、宽、像素形态、像素深度、通道数等资讯,以下介绍的成员变数或成员函数,让我们得到这些资讯.
rows 影像的列数,也就是影像高
cols 影像的栏数,也就是影像的宽
int Mat::channels()const 返回OpenCV通道数函数 1为灰阶图像 3为彩色图像
int Mat::depth() const 返回OpenCV像素深度
------------------------------------------------------------------------------------------------------------------------------------
CV_8U 位元深度为8,U代表无负号
CV_8S 位元深度为8,S代表有负号
CV_16U 位元深度为16,U代表无负号
CV_16S 位元深度为16,S代表有负号 CV_32F 浮点数
-----------------------------------------------------------------------------------------------------------------------------------
int Mat::type()const OpenCV像素形态:
形态和深度主要差别在形态有通道资讯
CV_8U 位元深度为8,U代表无负号,通道数为1
CV_8S 位元深度为8,S代表有负号,通道数为1
CV_16U 位元深度为16,U代表无负号,通道数为1
CV_32F 浮点数,通道数为1
CV_8UC3 位元深度为8,无负号,通道数为3
Size Mat::size()const OpenCV影像尺寸 返回的影像尺寸Size(cols,rows),(宽、高)