2 votes

Existe-t-il un moyen d'utiliser la méthode "Image.convert()" de Pillows sur une variable existante ?

Bonjour,

Peut-être que cette question semble stupide, mais j'essaie d'utiliser Pillows Image.convert() pour convertir une image en niveaux de gris. Cette image que j'ai stockée dans une variable img car je l'ai déjà prétraitée, mais pas avec Pillow (type: numpy.ndarray). Donc, je tape:

img = Image.convert('LA')

Mais cela ne semble pas fonctionner, car il indique :

AttributeError: module 'PIL.Image' has no attribute 'convert'

Si je tape img = Image.open("image.jpg").convert('LA') cela fonctionne, mais je veux l'utiliser sur une variable qui existe déjà. Je ne veux pas non plus enregistrer l'image prétraitée juste pour l'ouvrir et la convertir avec la commande précédente car cela est encore moins efficace (en termes de vitesse et de puissance du processeur). Donc : Y a-t-il un moyen approprié de le faire ?

Merci pour l'aide en avance !

0voto

Mark Setchell Points 11698

Alors que vous pourriez très bien convertir votre tableau Numpy en une image PIL, la convertir en niveaux de gris, puis la reconvertir en un tableau Numpy comme ceci :

PILImage = Image.fromarray(Numpyimg)
PILgrey  = PILImage.convert('L')
Numpygrey= np.array(PILgrey)

Vous pourriez tout aussi bien faire vous-même la transformation en luminance ITU-R 601-2, c'est-à-dire

L = 0.299 * Rouge + 0.587 * Vert + 0.114 * Bleu

Donc, vous auriez :

Numpygrey = np.dot(Numpyimg[...,:3], [0.299, 0.587, 0.114]).astype(np.uint8)

0voto

LampToast Points 295

Vous pouvez utiliser

img = Image.fromarray(img)

pour convertir en type d'image PIL. À partir de là, vous devriez pouvoir utiliser la fonction convert() de PIL

img = img.convert('LA')

ensuite, pour accéder directement aux valeurs de pixels, vous pouvez soit convertir à nouveau en un tableau numpy

img_array = np.asarray(img)

soit accéder aux pixels de l'image PIL en utilisant

pixels = img.load()

0voto

Kyle Ogle Points 1

Au lieu de dire Image.convert() utilisez votre variable d'image : img par exemple img = img.convert('') et dans ce cas :

img = img.convert('LA')

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X