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

图像数据类型的转换 matlab opencv

2013-07-10 21:09 561 查看
最近在将一个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);要乘以2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: