小编Bha*_*Ram的帖子

如何在保留分辨率的同时将二维浮点 numpy 数组无损地保存到灰度图像中?

我有一些温度字段值,我想在保留分辨率的同时将其转换为灰度图像。(例如,如果它是一个(100x100)大小的浮点数组,那么转换应该是一个灰度(100x100)图像。然后我将处理该图像并将其转换回Temperature numpy数组。图像处理部分可以看作是一个黑盒过程。

重要的是转换是无损的

此外,图像处理代码将识别 .png 和 .jpg。(我不确定是否识别包括 tiff 在内的其他文件格式。此外,即使是 jpg 格式也不是首选,因为它们会导致有损转换)。

我到目前为止的尝试:

  • Matplotlib 的imsave()分辨率保留并且是无损的。但它将图像转换为 RGB 而不是灰度。这种方法对我来说也很好,但我无法准确地将 3 通道 RGB 图像转换回浮点 numpy 数组。例如,我拿了一个 10x10 的 numpy 浮点数组temperature,使用plt.imsave('Temperature_profile.png',temperature). 然后,我重新打开了相同的图像,但无法找到将其转换回 (10x10) 浮点数组的准确方法。因此,如果有一种方法可以将 3 通道图像无损地转换回 2D 矩阵,问题就解决了。

  • PILImage.fromarray()保留分辨率并可以将图像保存为灰度图像。但是我无法无损地保存矩阵并无损地检索它。因此我会得到错误的结果。(将灰度值的 2D Numpy 数组转换为 PIL 图像

  • scipy.misc.imsave() 已弃用。

  • imageio.imwrite()给出有关有损转换的警告。(“从 float64 到 uint8 的有损转换”)。

  • opencv并且cv2由于某种原因没有被我的 spyder 环境(python 3.7,Anaconda 4.7.12)识别。

python image

5
推荐指数
1
解决办法
3094
查看次数

标签 统计

image ×1

python ×1