图像数据类型的转换 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
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
相关文章推荐
- Halcon 与 OpenCV 图像数据类型转换
- matlab中图像数据类型转换
- MATLAB和Opencv中数据类型转换
- 图像类型、MATLAB数据类型,以及类型之间的转换(二)
- Halcon 与 OpenCV 图像数据类型转换
- 图像类型、MATLAB数据类型,以及类型之间的转换(三)
- 图像类型、MATLAB数据类型,以及类型之间的转换(一)
- 关于OpenCV中利用函数cvConvert实现图像数据类型转换(8U->16S)
- Halcon 与 OpenCV 图像数据类型转换 HObject和 Mat
- OpenCV中IplImage图像格式与 BYTE图像数据的转换
- opencv笔记:图像与数据的相互转换
- Matlab数据类型和转换
- OpenCV中IplImage图像格式与BYTE图像数据的转换
- matlab图像类型转换以及uint8、double、im2double、im2uint8和mat2gray等说明
- vtk中图像数据类型转换 -- vtkImageShiftScale
- OpenCV中的Mat数据与Matlab中的数据的相互转换
- 如何将unsigned char*(或BYTE*)图像数据封装成OpenCV中Mat类型
- Matlab的数据类型及相互转换
- OpenCV中利用cvConvertScale()将图像的数据类型由u8转化为64f...
- opencv 数据类型转换:CvArr, Mat, CvMat, IplImage, BYTE 转