273 votes

Afficher une image en niveaux de gris à l'aide de matplotlib

J'essaie d'afficher une image en niveaux de gris en utilisant matplotlib.pyplot.imshow() . Mon problème est que l'image en niveaux de gris est affichée comme une carte de couleurs. J'ai besoin des niveaux de gris car je veux dessiner en couleur sur l'image.

Je lis l'image et je la convertis en niveaux de gris en utilisant LIP's Image.open().convert("L")

image = Image.open(file).convert("L")

Ensuite, je convertis l'image en une matrice afin de pouvoir facilement effectuer un traitement d'image en utilisant

matrix = scipy.misc.fromimage(image, 0)

Cependant, quand je fais

figure()  
matplotlib.pyplot.imshow(matrix)  
show()

il affiche l'image en utilisant une carte de couleurs (c'est-à-dire que ce n'est pas une échelle de gris).

Qu'est-ce que je fais de mal ici ?

10voto

baco Points 39

Essayez ceci :

import pylab
from scipy import misc

pylab.imshow(misc.lena(),cmap=pylab.gray())
pylab.show()

0 votes

Il n'y a pas pylab.grey() Peut-être a-t-il été supprimé ?

9voto

user3452134 Points 1

N'utiliser aucune interpolation et mettre en gris.

import matplotlib.pyplot as plt
plt.imshow(img[:,:,1], cmap='gray',interpolation='none')

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