@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 вместо трёх цветов пикселя возвращает один. Все получаемые массивы должны быть одной размерности. Как можно сделать так, чтобы можно было получить три цвета для каждого пикселя в случае чёрно-белого изображения?
  • Вопрос задан
  • 34 просмотра
Решения вопроса 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)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы