|
在OpenCV中,Mat类型的格式如下:
CV_<bit_depth>(S|U|F)C<number_of_channels>
bit_depth: 可以是8,16, 32。意思是深度,分别代表每个单位占用空间8位,16位,32位大小。
S = Signed integer整型。
U =Unsigned integer 无符号整型,常用。
F =Float 浮点型。
number_of_channels:代表通道数,1代表一通道的,例如灰图。3代表三通道的,例如RGB彩色图。4代表四通道的,例如RGBA彩色并支持透明度的图。
不同类型之前是可以转换,使用的函数是:
C++:void Mat::convertTo(OutputArraym, int rtype, double alpha=1, doublebeta=0 ) const
m为输出图像。
rtype为上面介绍的几种类型之一。
这个函数把源图像的每个像素的值转换成目标rtype类型,对图像的每个像素完成以下算式:

一般使用过程中alpha和beta可以忽略不写,系统会自动使用默认值1和0,这样就成了对每个像素进行类型转换。
举个例子:
Mat image_8U = Mat(6,6,CV_8UC3);//声明一个6*6大小的类型为CV_8UC3的图像
Mat image_32F;//目标图像
image_8U.convertTo(image_32F,CV_32FC3);//把CV_8UC3类型的图像转换成CV_32FC3类型
需要说明一下alpha参数有时候是很有用的,比如想把图像的默认[0,255]区间对应的映射到[0,1]区间,以便方便进行一些像素操作,可以把alpha的值设为1.0/255.0就可以了。
|