我有一个大尺寸的二维 numpy 数组 (size = (2000, 2000)),只有五个可能的值 1.0, 2.0, 3.0, 4.0 和 5.0。我想将此数组保存并显示为 RGB 颜色格式的图像,这里数组的每个唯一值应由不同的颜色表示。请帮助我是 python 初学者。
最佳答案
您可以使用 PIL.Image
来做到这一点,但首先要转换您的数组。
例如,您可以这样说:
- 1.0 应为红色,表示为 (255,0,0)
- 2.0 应为绿色 -> (0,255,0)
- 3.0 应为蓝色 -> (0,0,255)
- 4.0 应为黑色 -> (0,0,0)
- 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/