2017-06-15 3 views
3

Je suis en train de charger une image en niveaux de gris comme suit:image ne se charge pas en niveaux de gris (skimage)

from skimage import data 
from skimage.viewer import ImageViewer 

img = data.imread('my_image.png', as_gray=True) 

Cependant, si je vérifie pour sa forme à l'aide img.shape il se révèle être un trois tableau dimensionnel et non bidimensionnel. Qu'est-ce que je fais mal?

Répondre

2

De scikit-image documentation, la signature de data.imread est la suivante:

skimage.data.imread(fname, as_grey=False, plugin=None, flatten=None, **plugin_args) 

Votre code ne fonctionne pas correctement parce que l'argument mot-clé as_grey est mal orthographié (vous mettez as_gray).

run échantillon

In [4]: from skimage import data 

In [5]: img_3d = data.imread('my_image.png', as_grey=False) 

In [6]: img_3d.dtype 
Out[6]: dtype('uint8') 

In [7]: img_3d.shape 
Out[7]: (256L, 640L, 3L) 

In [8]: img_2d = data.imread('my_image.png', as_grey=True) 

In [9]: img_2d.dtype 
Out[9]: dtype('float64') 

In [10]: img_2d.shape 
Out[10]: (256L, 640L) 
+0

Got it! en passant: utilise 'data.imread()' à préférer à 'rgb2gray()' du paquet 'rgb2gray'? – rdv

+0

J'aurais fait 'img = skimage.io.imread ('my_image.png', as_grey = True)' car les images qui sont déjà au format de gris ne sont pas converties. Si vous passez 'rgb2gray' à une image qui n'est pas en 3-D ou en 4-D, vous obtenez un ValueError. – Tonechas

+0

Effacer - merci! – rdv