web-dev-qa-db-fra.com

Comment convertir une image 1 canal en 3 canaux avec PIL?

J'ai une image qui a un canal. Je voudrais dupliquer ce canal afin que je puisse obtenir une nouvelle image qui a le même canal, dupliqué trois fois Fondamentalement, faire une image quasi RBG.

Je vois des informations sur la façon de procéder avec OpenCV, mais pas dans PIL. Cela semble facile dans Numpy, mais encore une fois, PIL est différent. Je ne veux pas prendre l'habitude de passer de bibliothèque en bibliothèque tout le temps.

6
Monica Heddneck

Voici un moyen de ne pas trop regarder les documents.

fausse image:

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

Obtenez la taille (en pixels) de l’image à bande unique; créer une nouvelle image 3 bandes de la même taille; utilisez Zip pour créer des nuplets de pixels à partir de l'original; mettez cela dans la nouvelle image ..

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

Ou même éventuellement

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

juste utiliser:

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

peut convertir les canaux 1 canal et 4 canaux en 3 canaux

1
MarStarck