OpenCV中Mat类型格式

论坛 期权论坛 脚本     
匿名技术用户   2021-1-5 11:02   115   0

在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就可以了。







分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP