图像无法以灰度模式加载(skimage)

9

我正在尝试将图像加载为灰度图像,方法如下:

from skimage import data
from skimage.viewer import ImageViewer

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

然而,如果我使用img.shape检查其形状,则结果是一个三维数组,而不是二维数组。我做错了什么?

1个回答

13

scikit-image文档中可以看到,data.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)

1
明白了!顺便问一下:使用 data.imread() 是否比 rgb2gray 包中的 rgb2gray() 更好呢? - rdv
2
我会这样写 img = skimage.io.imread('my_image.png', as_grey=True),因为已经是灰度格式的图像不需要转换。如果你将一个非3-D或4-D的图像传递给rgb2gray,你会得到一个ValueError。 - Tonechas
7
警告! - 用户警告:as_grey已被弃用,请改用 as_gray - pka32
2
有趣的事实:Grey是英国拼写方式,而Gray在美国更为常用。 - A Merii

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接