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

ktecyv1j  于 2023-08-05  发布在  其他
关注(0)|答案(2)|浏览(99)

我想在P模式下加载一个图像,将其转换为np.array,然后再将其转换回来,但我得到了一个错误的Image对象,它是一个灰色图像,而不是彩色图像

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

j5fpnvbx

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

字符串

p4tfgftt

p4tfgftt2#

(我不能评论,在上述职位)小更正上述代码:img.putpalette(p)(代替setpalette

相关问题