我正在使用skimage模块的图像读取,无法理解我得到的输出。我试图以以下方式读取一个简单的rgb图像"lena.png":
from skimage import io
im = io.imread('lena.png')
我得到的输出具有以下属性:
In [49]: im
Out[49]: array(<PIL.PngImagePlugin.PngImageFile image mode=RGB size=512x512 at 0
x35FBD00>, dtype=object)
In [50]: im.shape
Out[50]: ()
In [51]: im.size
Out[51]: 1
现在我不明白了-为什么我的形状不是(512,512,3)?这段代码是我使用的一个更大的程序的一部分,当一些函数试图通过访问im.shape[2]来计算颜色通道的数量时,我得到了一个错误。
我正在添加一个具有预期输出的引用:参见http://scipy-lectures.github.io/packages/scikit-image/第3.2.2.2段
>>> lena = data.lena()
>>> lena.shape
(512, 512, 3)
此错误(imread
返回PIL.PngImagePlugin.PngImageFile
类而不是数据数组)经常发生在安装了较旧版本的python映像库pillow
或更糟糕的PIL
时。pillow
是PIL
的一个更新的"友好"分支,绝对值得安装!
尝试更新这些包;(取决于你的python发行版)
# to uninstall PIL (if it's there, harmless if not)
$ pip uninstall PIL
# to install (or -U update) pillow
$ pip install -U pillow
,然后尝试重新启动python shell并再次运行命令。