opecncv不同深度图像的转换(IPL_DEPTH_8U转IPL_DEPTH_32F)

来源:互联网 发布:诺基亚603软件下载 编辑:程序博客网 时间:2024/06/05 05:53
opencv的IplImage结构中有这么一个成员:depth。
其取值如下:
枚举值

用%d输出 二进制

IPL_DEPTH_8U : 8 : 0x0000 0008
IPL_DEPTH_8S :

-2147483640 : 0xffff fff8

IPL_DEPTH_16U : 16 : 0x0000 0010
IPL_DEPTH_16S : -2147483632 : 0xffff fff0
IPL_DEPTH_32S : -2147483616 : 0xffff ffe0
IPL_DEPTH_32F : 32 : 0x0000 0020
IPL_DEPTH_64F : 64 : 0x0000 0040


从文件或摄像头直接读取的图像一般都是8U的
当有特殊计算需求时可以用cvScale() 或cvCvtScale() 转换。


保存时必须转换回8U!


不同的深度其取值范围不一样:
0.0--1.0之间

IPL_DEPTH_64F

0.0--1.0之间

IPL_DEPTH_32F

0--65535之间

IPL_DEPTH_32S

-32768--32767之间

IPL_DEPTH_16S

0--65535之间

IPL_DEPTH_16U

-128--127之间

IPL_DEPTH_8S

0--255之间

IPL_DEPTH_8U


不同深度图像的转换:
要注意范围
比如IPL_DEPTH_8U 转到 IPL_DEPTH_32F
要用cvConvertScale(pImg8, pImg32, 1.0/255, 0); 要除255
反过来IPL_DEPTH_32F 到 IPL_DEPTH_8U
要:cvConverScale(pImg32, pImg8, 255, 0);要乘以255
0 0
原创粉丝点击