2017-06-15 70 views
3

我试图如下加载的图像为灰度:图片不加载为灰度(skimage)

from skimage import data 
from skimage.viewer import ImageViewer 

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

但是,如果我检查使用img.shape其形状它原来是一个三二维的,而不是二维的,数组。我究竟做错了什么?

回答

2

scikit-image documentationdata.imread签名如下:

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

您的代码不正确,因为关键字参数as_grey拼错工作(你把as_gray)。

采样运行

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

明白了!顺便说一句:使用'data.imread()'优先于'rgb2gray'包中的'rgb2gray()'? – rdv

+0

我会做'img = skimage.io.imread('my_image.png',as_grey = True)',因为已经处于灰度格式的图像不会被转换。如果你传递了一个不是3-D或4-D的图像,你会得到一个ValueError。 – Tonechas

+0

清除 - 谢谢! – rdv