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
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
相关文章推荐
- 图像数据类型的转换 matlab opencv
- OpenCV中Mat与Matlab中mxArray类型的转换
- OpenCV中Mat与IplImage和CvMat数据类型间的相互转换
- 图像类型、MATLAB数据类型,以及类型之间的转换(二)
- 将MATLAB中的mat数据转换为OpenCV能够读取的xml数据
- opencv常用数据类型的转换(个人整理)
- 关于OpenCV中利用函数cvConvert实现图像数据类型转换(8U->16S)
- MATLAB常用数据类型的转换
- opencv 多种数据类型的转换
- opencv 3.0 Mat 数据类型转换
- matlab把数据从胞元类型(cell)转换为矩阵类型(matrix)
- Matlab数据类型转换
- matlab数据类型和转换
- Matlab数据类型的转换
- OpenCV中Mat与Matlab中mxArray类型的转换II
- matlab数据类型和转换
- Matlab数据类型和转换
- Matlab数据类型及转换
- Matlab的数据类型及相互转换
- Matlab数据类型及转换