【问题标题】:Image does not load as grayscale (skimage)图像不加载为灰度(skimage)
【发布时间】:2017-11-17 15:14:08
【问题描述】:

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

from skimage import data
from skimage.viewer import ImageViewer

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

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

【问题讨论】:

    标签: python grayscale scikit-image imread


    【解决方案1】:

    来自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)
    

    【讨论】:

    • 知道了!顺便说一句:使用data.imread() 是否比rgb2gray 包中的rgb2gray() 更受欢迎?
    • 我会做img = skimage.io.imread('my_image.png', as_grey=True),因为已经是灰度格式的图像不会被转换。如果你传递rgb2gray 一个不是 3-D 或 4-D 的图像,你会得到一个 ValueError。
    • 警告! - 用户警告:as_grey 已被弃用,取而代之的是 as_gray
    • 有趣的事实:Gray 是英国的拼写方式,而 Gray 在美国人中更常用。
    猜你喜欢
    • 2020-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多