Задать вопрос
@FoxBoost

Как заставить getdata() из Pillow возвращать массив из кортежей с RGB цветами пикселя, если фотография чёрно-белая?

Я преобразую массив пискелей, полученный с помощью PIllow в трёхмерный массив NumPy, и данный код нормально работает со цветными изображениями:
def PIL2array(img):
    np.array(img.getdata(), np.uint8).reshape(img.size[0], img.size[1], 3)

Но когда подаётся чёрно-белое изображение, выдаётся следующая ошибка:
ValueError: cannot reshape array of size 784 into shape (28,28,3)

Проблема в том, что Pillow вместо трёх цветов пикселя возвращает один. Все получаемые массивы должны быть одной размерности. Как можно сделать так, чтобы можно было получить три цвета для каждого пикселя в случае чёрно-белого изображения?
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Средний Комментировать
Решения вопроса 1
alternativshik
@alternativshik
А если конвертнуть в RGB перед этим?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
adugin
@adugin Куратор тега Python
Всё гораздо проще:
np.array(img)
Можно ещё поставить -1 вместо 3:
np.array(img.getdata(), np.uint8).reshape(img.size[0], img.size[1], -1)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
31 янв. 2025, в 00:16
43000 руб./за проект
30 янв. 2025, в 21:33
5000 руб./за проект
30 янв. 2025, в 21:14
4000 руб./за проект