我有一个整数数组,用很少的值(大约2-5)来表示图像。我想将它保存到png文件中,为每个值自定义颜色。我是这样尝试的:
import numpy as np
from PIL import Image
array = np.zeros([100, 200, 4], dtype=np.uint8)
array[:,:100] = [255, 128, 0, 255] #Orange left side
array[:,100:] = [0, 0, 255, 255] #Blue right side
img = Image.fromarray(array)
img.save(r'D:\test.png')结果是ok,但它有4个通道。我需要的结果是自定义颜色的单通道。
我是这样尝试的:
array = np.zeros([100, 200], dtype=np.uint8)
array[:,:100] = 1
array[:,100:] = 0 结果是单通道,但它当然是灰色销售。我不知道如何将颜色赋值为1和0,并将其保存为单通道。尝试使用matplotlib色彩映射表,但没有成功。
如有任何帮助,将不胜感激
发布于 2020-11-04 23:20:58
您可以像这样制作调色板图像:
#!/usr/bin/env python3
from PIL import Image
import numpy as np
# Make image with small random numbers
im = np.random.randint(0,5, (4,8), dtype=np.uint8)
# Make a palette
palette = [255,0,0, # 0=red
0,255,0, # 1=green
0,0,255, # 2=blue
255,255,0, # 3=yellow
0,255,255] # 4=cyan
# Pad with zeroes to 768 values, i.e. 256 RGB colours
palette = palette + [0]*(768-len(palette))
# Convert Numpy array to palette image
pi = Image.fromarray(im,'P')
# Put the palette in
pi.putpalette(palette)
# Display and save
pi.show()
pi.save('result.png')

https://stackoverflow.com/questions/64681931
复制相似问题