我有一个数据类型为double的矩阵
但是,当我尝试使用以下代码保存它时,保存的图片完全是白色的。
finalMat
,其值范围在0到255之间。它实际上对应于一些图像。我将其显示如下:imshow(finalMat, []);
但是,当我尝试使用以下代码保存它时,保存的图片完全是白色的。
imwrite(finalMat,'myImage.jpeg','JPEG');
我希望能够将图像保存到磁盘中,而不改变finalMat矩阵中的数值。当我读取已保存的图像,即myImage.jpeg时,必须获得与finalMat中相同的数值。请问有谁能帮忙保存这个图像吗?
uin8
,因为它只是一个类型转换。可能更好的选择是mat2gray
。 - Ander Biguriimwrite
在写入时也会将其转换为uint8类型。文档中指出,它会被转换为8位图像:“如果A是灰度或RGB颜色图像,数据类型为double或single,则imwrite假定动态范围为[0,1],并在写入文件之前自动将数据缩放255作为8位值。如果A中的数据为single,请在写入GIF或TIFF文件之前将A转换为double。” - Sueveruint8()
操作时,它只是转换数值类型。mat2gray
的作用也相同,但会确保进行缩放。不受控制地使用uint8
将会导致未知结果,因为它会进行强制类型转换。 - Ander Biguri