J'essaie d'afficher une image en niveaux de gris à l'aide de matplotlib.pyplot.imshow () . Mon problème est que l'image en niveaux de gris est affichée sous forme de palette de couleurs. J'ai besoin de l'échelle de gris car je veux dessiner sur l'image avec de la couleur.
J'ai lu l'image et je l'ai convertie en niveaux de gris en utilisant Image.open () de PIL. Convert ("L")
image = Image.open(file).convert("L")
Ensuite, je convertis l'image en une matrice afin que je puisse facilement faire 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 à l'aide d'une palette de couleurs (c'est-à-dire qu'elle n'est pas en niveaux de gris).
Qu'est-ce que je fais mal ici?
_r
."plt.imshow(im_gray,cmap='gray', vmin = 0, vmax = 255)
Essayez d'utiliser une palette de couleurs en niveaux de gris?
Par exemple quelque chose comme
Pour une liste des cartes de couleurs, voir http://scipy-cookbook.readthedocs.org/items/Matplotlib_Show_colormaps.html
la source
import matplotlib.pyplot as plt
Vous pouvez également exécuter une fois dans votre code
Cela montrera les images en niveaux de gris par défaut
la source
gray()
ougrey()
?gray
... le gris est l'orthographe américaine standard et le gris est l'orthographe britannique pour la même couleur.J'utiliserais la méthode get_cmap. Ex.:
la source
La réponse de @ unutbu est assez proche de la bonne réponse.
Par défaut, plt.imshow () tentera de mettre à l'échelle vos données de tableau (MxN) à 0,0 ~ 1,0. Et puis mappez à 0 ~ 255. Pour la plupart des images prises naturellement, c'est bien, vous ne verrez pas de différence. Mais si vous avez une plage étroite d'images de valeur de pixel, disons que le pixel minimum est 156 et le pixel maximum est 234. L'image grise sera totalement fausse. La bonne façon de montrer une image en gris est
Voyons un exemple:
c'est l'image d' origine : original
ceci utilise le paramètre de norme par défaut, qui est Aucun: mauvaise image
ceci utilise le paramètre NoNorm, qui est NoNorm (): image de droite
la source
essaye ça:
la source
pylab.grey()
, peut-être qu'il a été supprimé?N'utilisez aucune interpolation et définissez le gris.
la source