scikit-image==0.16.2
,Pillow==7.1.1
from skimage.io import imread
file_path = "image_you_like.png"
img = imread(file_path, plugin="pil", as_gray=False)
[img
是图像的Numpy数组。
不信任行号,因为我插入了一些打印功能。
~/Python/experiment/venv/lib/python3.7/site-packages/PIL/PngImagePlugin.py in _seek(self, frame, rewind)
789
790 try:
--> 791 cid, pos, length = self.png.read()
792 except (struct.error, SyntaxError):
793 break
AttributeError: 'NoneType' object has no attribute 'read'
如何防止此错误并读取图像?
经过一些分析,我发现如果imread
或plugin="matplotlib"
,则plugin="imageio"
起作用。问题是某些功能,例如skimage.data.camera
用imread
调用plugin="pil"
,因此我无法尝试scikit-image
的任何示例图像。
[编辑]
from skimage.io.manage_plugins import plugin_store
print(plugin_store["imread"])
打印以下内容
[('imageio', <function imread at 0x7efe39112c20>), ('matplotlib', <function imread at 0x7efe37f51290>)]
因此列表中找不到“ pil”。
此问题为reported on github。
作为用户,最简单的解决方案是将版本降级到6.2.2。