图像无法加载为灰度(skimage)

rdv*_*rdv 6 python grayscale scikit-image imread

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

from skimage import data
from skimage.viewer import ImageViewer

img = data.imread('my_image.png', as_gray=True)
Run Code Online (Sandbox Code Playgroud)

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

Ton*_*has 7

scikit-image文档中,签名data.imread如下:

skimage.data.imread(fname, as_grey=False, plugin=None, flatten=None, **plugin_args)
Run Code Online (Sandbox Code Playgroud)

您的代码无法正常运行,因为关键字参数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)
Run Code Online (Sandbox Code Playgroud)

  • 警报!- 用户警告:`as_grey` 已被弃用,取而代之的是 `as_gray` (3认同)
  • 我会做`img = skimage.io.imread('my_image.png', as_grey=True)` 因为已经是灰度格式的图像不会被转换。如果您向 `rgb2gray` 传递一个不是 3-D 或 4-D 的图像,则会得到一个 ValueError。 (2认同)
  • 有趣的事实:Gray 是英国的拼写方式,而 Gray 在美国人中更常用。 (2认同)