OpenCV中Mat类型格式

来源:互联网 发布:厨房清洁剂 知乎 编辑:程序博客网 时间:2024/06/05 04:53

在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++:voidMat::convertTo(OutputArraym, intrtype, 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就可以了。







0 0