PIL:fromarray在P模式下给出错误的对象

时间:2018-05-21 10:32:57

标签: python numpy machine-learning python-imaging-library

我想在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是灰色图片

1 个答案:

答案 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')