我想在P模式下加载一个图像,将其转换为np.array,然后再将其转换回来,但我得到了一个错误的Image对象,它是一个灰色图像,而不是彩色图像
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是灰色图片
dir
test.png
j5fpnvbx1#
“P”模式下的图像需要将每个颜色索引与实际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')
字符串
p4tfgftt2#
(我不能评论,在上述职位)小更正上述代码:img.putpalette(p)(代替setpalette)
img.putpalette(p)
setpalette
2条答案
按热度按时间j5fpnvbx1#
“P”模式下的图像需要将每个颜色索引与实际RGB颜色相关联的调色板。将图像转换为数组会丢失调色板,您必须再次恢复它。
字符串
p4tfgftt2#
(我不能评论,在上述职位)小更正上述代码:
img.putpalette(p)
(代替setpalette
)