我想在P
模式下加载图片,将其转换为np.array
,然后将其转换回来,但我得到的图像对象是灰色图像,而不是颜色
label = PIL.Image.open(dir).convert('P')
label = np.asarray(label)
img = PIL.Image.fromarray(label, mode='P')
img.save('test.png')
dir
是原始图片的路径; test.png
是灰色图片
答案 0 :(得分:0)
' P'中的图片mode需要一个调色板,将每个颜色索引与实际的RGB颜色相关联。将图像转换为数组会丢失调色板,您必须再次将其恢复。
label = PIL.Image.open(dir).convert('P')
p = label.getpalette()
label = np.asarray(label)
img = PIL.Image.fromarray(label, mode='P')
img.setpalette(p)
img.save('test.png')