您的位置:首页 > 编程语言 > MATLAB

MATLAB和Opencv中数据类型转换

2017-04-20 23:30 363 查看
最近在将一个matlab的程序导成C+opencv。在运算过程中为了精度,通常在matlab中会将图像的数据类型转换为double,而在opencv中我们通常用的数据类型都是IPL_DEPTH_8U,为了跟matlab中相统一也就是为了精度的,在opencv中发现同样也存在精度的转换函数。现总结如下:

Matlab中的图像数据类型转换 

MATLAB中读入图像的数据类型是uint8,而在矩阵中使用的数据类型是double因此 I2=im2double(I1)
:把图像数组I1转换成double精度类型;如果不转换,在对uint8进行加减时会产生溢出,可能提示的错误为:Function '*' is not defined for values of class 'uint8'

  图像数据类型转换函数
 默认情况下,matlab将图像中的数据存储为double型,即64位浮点数;matlab还支持无符号整型(uint8和uint16);uint型的优势在于节省空间,涉及运
算时要转换成double型。
 im2double():将图像数组转换成double精度类型
 im2uint8():将图像数组转换成unit8类型 

 im2uint16():将图像数组转换成unit16类型

Opencv中图像数据类型的转换

不同深度图像的转换:

要注意范围

比如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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: