python - 如何将 2d numpy 数组保存并显示为 RGB 伪彩色图像?

标签 python image numpy save

我有一个大尺寸的二维 numpy 数组 (size = (2000, 2000)),只有五个可能的值 1.0, 2.0, 3.0, 4.0 5.0。我想将此数组保存并显示为 RGB 颜色格式的图像,这里数组的每个唯一值应由不同的颜色表示。请帮助我是 python 初学者。

最佳答案

您可以使用 PIL.Image 来做到这一点,但首先要转换您的数组。

例如,您可以这样说:

  1. 1.0 应为红色,表示为 (255,0,0)
  2. 2.0 应为绿色 -> (0,255,0)
  3. 3.0 应为蓝色 -> (0,0,255)
  4. 4.0 应为黑色 -> (0,0,0)
  5. 5.0 应为白色 -> (255,255,255)

您当然可以将这些值更改为您选择的任何颜色,但这仅用于演示。话虽这么说,您的二维数组还需要“展平”为一维,以便 PIL.Image 接受它作为数据。

from PIL import Image
import numpy as np
your_2d_array = np.something() # Replace this line, obviously
img_array = []
for x in your_2d_array.reshape(2000*2000):
    if x == 1.0:
        img_array.append((255,0,0)) # RED
    elif x == 2.0:
        img_array.append((0,255,0)) # GREEN
    elif x == 3.0:
        img_array.append((0,0,255)) # BLUE
    elif x == 4.0:
        img_array.append((0,0,0)) # BLACK
    elif x == 5.0:
        img_array.append((255,255,255)) # WHITE

img = Image.new('RGB',(2000,2000))
img.putdata(img_array)
img.save('somefile.png')

虽然这应该有效,但我认为有更有效的方法来做到这一点,我不知道,所以如果有人用更好的例子编辑这个答案,我会很高兴。但如果它是一个小型应用程序,并且最高效率并不困扰您,那么它就是这样。

关于python - 如何将 2d numpy 数组保存并显示为 RGB 伪彩色图像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44890720/

相关文章:

python - 如何将 numpy.recarray 转换为 numpy.array?

Python - 无法检测面部和眼睛?

c++ - 基于组件的游戏实体和类型检查

python - 从包含某些关键字的列表中删除多个字符串元素

html - 文本与图像垂直居中

python - 使用 python 预处理数据框中多列上的文本数据

python - Django REST框架教程1中的类型错误: Serialization

css - 背景图像被某些问题覆盖

json - 将图像传递给变量中的模板

python - Pandas DataFrames 列未被识别为数字