无法导入scipy.misc.imread

86 投票
10 回答
203417 浏览
提问于 2025-04-17 13:05

我之前见过其他人遇到过这个问题,但一直没找到解决办法。

我只是想做的是:

from scipy.misc import imread

结果我得到了

/home1/users/joe.borg/<ipython-input-2-f9d3d927b58f> in <module>()
----> 1 from scipy.misc import imread

/software/Python/272/lib/python2.7/site-packages/scipy/misc/__init__.py in <module>()
     16 try:
     17     from pilutil import *
---> 18     __all__ += pilutil.__all__
     19 except ImportError:
     20     pass

NameError: name 'pilutil' is not defined

但是当我单独使用 from pilutil import * 时没有任何错误。甚至.../site-packages/scipy/misc/pilutil.py 这个文件也存在,所以我完全不知道为什么会出错。

10 个回答

31

scipy.misc里,imread这个方法需要一个叫Pillow的包,它是PIL的一个分支。如果你在安装正确版本的PIL时遇到问题,可以尝试在其他包里使用imread

from matplotlib.pyplot import imread
im = imread(image.png)

如果你想读取jpg格式的图片而不使用PIL,可以这样做:

import cv2 as cv
im = cv.imread(image.jpg)
59

你可能需要安装 PIL 或者 Pillow

76

如果你安装了 Pillowscipy,但还是出现错误,那就检查一下你的 scipy 版本,因为从 1.3.0rc1 开始,scipy 就把某些东西给去掉了。

你可以安装 scipy 1.1.0,方法是:

pip install scipy==1.1.0

可以查看这个链接了解更多信息:https://github.com/scipy/scipy/issues/6212

撰写回答