PIL: fromarray выдает неправильный объект в режиме P - PullRequest
0 голосов
/ 21 мая 2018

Я хочу загрузить изображение в режиме 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 - это серая картинка

1 Ответ

0 голосов
/ 21 мая 2018

Изображения в режиме «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')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...