opencv-图像位深度

矩阵数据类型

– CV_<bit_depth>(S|U|F)C<number_of_channels>
S = 符号整型 U = 无符号整型 F = 浮点型

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

其中,通道表示每个点能存放多少个数,类似于RGB彩色图中的每个像素点有三个值,即三通道的。
图片中的深度表示每个值由多少位来存储,是一个精度问题,一般图片是8bit(位)的,则深度是8.

convertScaleAbs

  • 0-255 :CV_8U类型图片
  • 0-65535: CV_16U类型图片
  • 0-1: CV_32F类型图片

深度显示范围:(说当定义了如下不同深度的时候,像素的灰度值要处于显示范围之中才可以显示出来。否则要进行转换)

     测试double型:0.0--1.0之间                              IPL_DEPTH_64F

      测试float型:0.0--1.0之间                                  IPL_DEPTH_32F

      测试long型:0--65535之间                                IPL_DEPTH_32S        

      测试short int型:-32768--32767之间                 IPL_DEPTH_16S        

      测试unsigned short int型:0--65535之间           IPL_DEPTH_16U

扫描二维码关注公众号,回复: 8700716 查看本文章

      测试char型:-128--127之间                               IPL_DEPTH_8S          

      测试unsigned char型:0--255之间                     IPL_DEPTH_8U

 不同深度图像的转换

要注意范围
比如IPL_DEPTH_8U 转到 IPL_DEPTH_32U 要用cvConvertScale(pImg8, pImg32, 1.0/255, 0); 要除255。
反过来IPL_DEPTH_32F 到 IPL_DEPTH_8U 要:cvConverScale(pImg32, pImg8, 255, 0); 要乘以255。

Mat depth1;
depth.convertTo(depth1,CV_16U,1.0/500);
convertTo 用于将对象图像像素格式转换为指定像素格式。 
第三个参数为缩放因子,即图像每个像素值除以500,注意为double类型
发布了142 篇原创文章 · 获赞 14 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_30460949/article/details/103456712