opencv通道与位数的定义

形式:CV_<bit_depth>(S|U|F)C<number_of_channels>

bit_depth:比特数—代表8bite,16bites,32bites,64bites…

举个例子吧–比如说:

如果你现在创建了一个存储–灰度图片的Mat对象,这个图像的大小为宽100,高100,那么,现在这张灰度图片中有10000个像素点,它每一个像素点在内存空间所占的空间大小是8bite,8位–所以它对应的就是CV_8。


S|U|F:

S–代表—signed int—有符号整形

U–代表–unsigned int–无符号整形

F–代表–float---------单精度浮点型


C<number_of_channels>----代表—一张图片的通道数,比如:

channels = 1:灰度图片–grayImg—是–单通道图像

channels = 3:RGB彩色图像---------是–3通道图像

channels = 4:带Alph通道的RGB图像–是--4通道图像

可以这么创建Mat类对象:

Mat(int rows, int cols, int _type);

或 Mat(Size size,int _type);

_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.

注意:我们偶尔会发现不带通道数的类型,如:CV_32S,CV_8U等等。

其实,不带通道数的这些类型就是默认通道数为1。

例如,CV_8U就等同于CV_8UC1,CV_32S就等同于CV_32SC1。

参考链接:https://stackoverflow.com/questions/14543420/in-opencv-whats-the-difference-between-cv-8u-and-cv-8uc1

imshow函数在显示图像时,会将各种类型的数据都映射到[0, 255]。

如下:

· 如果载入的图像是8位无符号类型(8-bit unsigned),就显示图像本来的样子。

· 如果图像是16位无符号类型(16-bit unsigned)或32位整型(32-bit integer),便用像素值除以256。也就是说,值的范围是 [0,255 x 256]映射到[0,255]。

· 如果图像是32位或64位浮点型(32-bit floating-point or 64-bit floating-point),像素值便要乘以255。也就是说,该值的范围是 [0,1]映射到[0,255]。

如:CV_8U的灰度或BGR图像的颜色分量都在0~255之间。直接imshow可以显示图像。 CV_32F或者CV_64F取值范围为0~1.0,imshow的时候会把图像乘以255后再显示。

CV_8UC1 是指一个8位无符号整型单通道矩阵,
CV_32FC2是指一个32位浮点型双通道矩阵
CV_8UC1 CV_8SC1 CV_16U C1 CV_16SC1
CV_8UC2 CV_8SC2 CV_16UC2 CV_16SC2
CV_8UC3 CV_8SC3 CV_16UC3 CV_16SC3
CV_8UC4 CV_8SC4 CV_16UC4 CV_16SC4
CV_32SC1 CV_32FC1 CV_64FC1
CV_32SC2 CV_32FC2 CV_64FC2
CV_32SC3 CV_32FC3 CV_64FC3
CV_32SC4 CV_32FC4 CV_64FC4

来源:CSDN
原文:https://blog.csdn.net/u011028345/article/details/75415914
原文:https://blog.csdn.net/Young__Fan/article/details/81868666

猜你喜欢

转载自blog.csdn.net/lwljing/article/details/89737792