Итак, я пытаюсь преобразовать BMP в массив NumPy, где-то хранить массив, а затем преобразовать его обратно в образ bmp на более поздней время.Использование PIL для открытия изображения с палитрой и сохранения этого изображения с той же палитрой
bmp = Image.open(fn_bmp)
data = np.array(bmp.convert('P', palette=Image.WEB))
Эти данные временно хранятся в другом файле, а затем я отправляюсь на его получение позже.
bmp = Image.fromarray(np.array(dataset).convert('P', palette=Image.WEB))
bmp.save(fn)
Обратите внимание, что набор данных представляет собой объект преобразуется обратно в NumPy массива и np.array (набор данных) == данные по всем индексам.
По какой-то причине, когда я показываю или сохраняю полученное изображение, значение «14», соответствующее цвету палитры, интерпретируется как значение шкалы серого и сохраняется как таковое. Как сохранить изображение в виде растрового изображения цветной палитры? Я попытался добавить параметры к сохранению (например, mode = 'P', palette = Image.WEB) безрезультатно. Спасибо за помощь.
EDIT:
В учебнике части документации PIL, он определяет ограничения преобразований.
Библиотека поддерживает преобразования между каждым поддерживаемым режимом и режимами «L» и «RGB». Для преобразования между другими режимами вам может потребоваться промежуточное изображение (обычно это изображение «RGB»).
Итак, чтобы выполнить то, что я делаю, мне нужно преобразовать изображение в RGB в первом массиве и преобразовать обратно в P во втором.
Однако изображение (только с 4 цветами) искажается при преобразовании из RGB обратно в P. Есть ли причина для этого?