web-dev-qa-db-fra.com

skimage: Pourquoi rgb2gray de skimage.color donne-t-il une image colorée?

Lorsque j'ai essayé de convertir l'image en niveaux de gris en utilisant:

from skimage.io import imread
from skimage.color import rgb2gray
mountain_r = rgb2gray(imread(os.getcwd() + '/mountain.jpg'))

#Plot
import matplotlib.pyplot as plt
plt.figure(0)
plt.imshow(mountain_r)
plt.show()

J'ai une image colorée bizarre au lieu d'une échelle de gris.

L'implémentation manuelle de la fonction me donne également le même résultat. La fonction personnalisée est:

def rgb2grey(rgb):
    if len(rgb.shape) is 3:
        return np.dot(rgb[...,:3], [0.299, 0.587, 0.114])

    else:
        print 'Current image is already in grayscale.'
        return rgb

Original

Image colorée qui n'est pas en niveaux de gris. gray

Pourquoi la fonction ne convertit-elle pas l'image en niveaux de gris?

20
kwotsin

L'image résultante est en niveaux de gris. Cependant, imshow, par défaut, utilise une sorte de carte thermique (appelée vidris) pour afficher les intensités de l'image. Spécifiez simplement la palette de couleurs en niveaux de gris comme indiqué ci-dessous:

plt.imshow(mountain_r, cmap="gray")

Pour toutes les cartes de couleurs possibles, consultez la référence de la carte de couleurs .

27
Tony Power