scipy.misc模块没有属性读取?


124

我正在尝试读取图像。但是,它不接受该scipy.misc.imread零件。这可能是什么原因?

>>> import scipy
>>> scipy.misc
<module 'scipy.misc' from 'C:\Python27\lib\site-packages\scipy\misc\__init__.pyc'>
>>> scipy.misc.imread('test.tif')
Traceback (most recent call last):
  File "<pyshell#11>", line 1, in <module>
    scipy.misc.imread('test.tif')
AttributeError: 'module' object has no attribute 'imread'

您正在使用哪个版本的scipy?scipy.__version__0.9.0我,我无法重现您的问题
hannes

如果这样做from scipy.misc import imread,是否会得到相同的错误imread('test.tif')
karthikr

@karthikr是的,我为此得到相同的错误。
ustroetz 2013年

4
我认为此功能取决于安装的PIL(pythonware.com/products/pil)。你有PIL吗?
野鸭

6
imread在SciPy 1.0.0中已弃用,在1.2.0中已删除。使用imageio.imread代替。
马纳斯

Answers:


137

您需要安装Pillow(以前称为PIL)。从在文档scipy.misc

请注意,Pillow不是SciPy的依赖项,但是如果没有它,下面列表中指示的图像处理功能将不可用:

...

imread

...

安装Pillow后,我可以imread如下访问:

In [1]: import scipy.misc

In [2]: scipy.misc.imread
Out[2]: <function scipy.misc.pilutil.imread>

Orz,但如果我安装PIL,它将给我<PngImagePlugin.PngImageFile...
Allan Ruin 2014年

21
现在应该是Pillow而不是PIL。参考: pillow.readthedocs.org
雨辰忠

您保存了我的一天,但是为什么scipy文档如此糟糕!我的步骤是安装numpy + MKL> Pillow> Scipy都是从加利福尼亚大学尔湾分校的Windows编译的python模块下载的。
SIslam

4
还要阅读下一个答案(@Shadab的答案),请注意,这只是imageio,不是scipy.imageio
特里·布朗

4
请注意,这不适用于最新版本的SciPy(1.3.0)。Shadab的解决方案有效。
Nikhil Gupta

105

imread在SciPy 1.0.0中已弃用,在1.2.0中将被删除。使用imageio.imread代替。

import imageio
im = imageio.imread('astronaut.png')
im.shape  # im is a numpy array
(512, 512, 3)
imageio.imwrite('imageio:astronaut-gray.jpg', im[:, :, 0])

12
SciPy的imread用于返回numpy.ndarray。imageio.imread返回imageio.core.util.Array。如果您想要/需要一个numpy.ndarray并且不想转换它,请使用matplotlib.pyplot.imread,因为它还会返回一个numpy.ndarray。
Stefan

1
我在这里有一个类似的问题,但关于imresize。以前,scipy.misc.imresize作品。现在已弃用,我在哪里可以找到替代方案?
saichand

@saichand开个玩笑
filip

1
@filip,我尝试使用scipy.misc.imresize。现在它不起作用,但是我曾经有一段时间使用它。我希望您能纠正我的意见,如果我说的话有任何错误,而不是开个玩笑。我愿意从错误中学习。我的评论有什么问题?谢谢。
saichand

好吧,我不得不承认,当时我写的评论对我有点沮丧:P。我的意思是,他们没有提供轮子或低于1.0的窗户安装装置,这是一个笑话。如果您仍在使用它,请使用scipy == 1.2.0,因为它在那里仍然可用(只是标记为已弃用,仍然可以使用!)@saichand
filip

48

版本1.2.0之后,imread贬值!因此,要解决此问题,我必须安装版本1.1.0。

pip install scipy==1.1.0

3
参见@Shadab的答案,它imageio已经存在。
特里·布朗

31

对于Python 3,最好是使用imreadmatplotlib.pyplot

from matplotlib.pyplot import imread

17

如果有人遇到相同的问题,请卸载scipy并安装scipy == 1.1.0

$ pip uninstall scipy

$ pip install scipy==1.1.0

9

您需要Python Imaging Library(PIL),但是but!PIL项目似乎已被放弃。特别是,它尚未移植到Python3。因此,如果要在Python 3中使用PIL功能,则最好使用Pillow,它是PIL的半官方分支,并且正在积极开发中。实际上,如果您完全需要现代的PIL实现,我建议您选择Pillow。就像一样简单pip install pillow。由于它使用与PIL相同的名称空间,因此实质上是直接替代。

这个叉子有多“半官方”?你可能会问。“ 枕头”文档的“ 关于”页面说:

自上次发布PIL之后,随着时间的流逝,新发布PIL的可能性降低。但是,我们尚未听到官方的“ PIL已死”声明。因此,如果您仍然希望支持PIL,请先在此处报告问题,然后在此处打开相应的枕头票。

请提供第一张票证的链接,以便我们可以跟踪上游问题。

但是,PIL 官方站点上的最新PIL版本发布于2009年11月15日。我认为,在将近八年没有新版本发布之时,我们可以肯定地说Pillow是PIL的继承者。因此,即使您不需要Python 3支持,我也建议您避免使用PyPI中可用的古老PIL 1.1.6发行版,而只需安装新的,最新的,兼容的Pillow。


7

通过以下命令安装枕头库:

pip install pillow

请注意,所选答案已过时。查看SciPy的文档

请注意,Pillow(https://python-pillow.org/)不是SciPy的依赖项,但如果没有它,则下面列表中指示的图像处理功能将不可用。


6

答案是:misc.imread在SciPy 1.0.0中已弃用,在1.2.0中将被删除。imageio是一个选项,它将返回类型为object的对象:

<class 'imageio.core.util.Image'>

但要使用image2,而不要使用imageio

import cv2
im = cv2.imread('astronaut.png')

我将是类型: <class 'numpy.ndarray'>

由于numpy数组的计算速度更快。


ImageIO的作品,但CV2原因错误:的libpng警告:在IHDR无效图像高度
sailfish009



1

您需要一个python图像库(PIL),但是现在仅PIL还不够,您最好安装Pillow。这很好。


2
关于已接受的答案已有评论,指出pillow应使用而不是PIL。我认为将其添加为答案并不是一个坏主意,但是如果您解释了原因,它将会更加有用。谢谢。
lrnzcig

1

在Jupyter Notebook中运行以下命令,我收到了类似的错误消息:

from skimage import data
photo_data = misc.imread('C:/Users/ers.jpg')
type(photo_data)

“错误”消息:

D:\ Program Files(x86)\ Microsoft Visual Studio \ Shared \ Anaconda3_64 \ lib \ site-packages \ ipykernel_launcher.py:3:DeprecationWarning:已imread弃用!imread在SciPy 1.0.0中已弃用,在1.2.0中将被删除。使用imageio.imread 代替。这与ipykernel软件包分开,因此我们可以避免导入,直到

并使用以下我解决了:

import matplotlib.pyplot
photo_data = matplotlib.pyplot.imread('C:/Users/ers.jpg')
type(photo_data)

它与问题无关。这是一个不同的问题和答案。
哈利斯Yılboğa19年

1

我在jupyter笔记本上具有图像提取所需的所有软件包,但即使如此,它仍然显示相同的错误。

Jupyter Notebook上的错误

阅读以上评论,我已经安装了必需的软件包。请告诉我是否错过了一些包裹。

pip3 freeze | grep -i -E "pillow|scipy|scikit-image"
Pillow==5.4.1
scikit-image==0.14.2

scipy==1.2.1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.