Как преобразовать 1-канальное изображение в 3-канальное с помощью PIL? - PullRequest
0 голосов
/ 09 мая 2018

У меня есть изображение с одним каналом. Я хотел бы продублировать этот один канал так, чтобы я мог получить новое изображение с тем же каналом, только дублированным три раза. По сути, создание квази RBG изображения.

Я вижу некоторую информацию о том, как сделать это с OpenCV, но не в PIL. В Numpy это выглядит легко, но, опять же, PIL отличается. Я не хочу привыкать постоянно прыгать из библиотеки в библиотеку.

Ответы [ 2 ]

0 голосов
/ 13 августа 2018

просто используйте:

image = Image.open(image_info.path).convert("RGB")

может преобразовать как 1-канальный, так и 4-канальный в 3-канальный

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

Вот один способ, не заглядывая в документы ...

поддельное изображение:

im = Image.new('P', (16,4), 127)

Получить (в пикселях) размер изображения в одной полосе; создать новое 3-полосное изображение того же размера; используйте zip для создания пиксельных кортежей из оригинала; поместите это в новый образ ..

w, h = im.size
ima = Image.new('RGB', (w,h))
data = zip(im.getdata(), im.getdata(), im.getdata())
ima.putdata(list(data))

Или даже возможно

new = im.convert(mode='RGB')
...