2013-03-11 168 views
40

我想用scipy阅读图像。但它不接受scipy.misc.imread部分。这可能是什么原因?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' 
+0

scipy的哪个版本是你用的? 'scipy .__ version__'为我提供'0.9.0',我不能再现你的问题 – hannes 2013-03-11 18:27:03

+0

如果你从'scipy.misc import imread',然后'imread('test.tif')得到同样的错误' ? – karthikr 2013-03-11 18:27:16

+0

@karthikr是的,我得到了同样的错误。 – ustroetz 2013-03-11 18:29:04

回答

77

您需要安装Pillow(以前PIL)。从the docsscipy.misc

注意,枕头是不是SciPy的的依赖,但低于表中所列的图像处理功能不可用,没有它:

...

imread

...

安装Pillow后,我abl E要访问imread如下:

In [1]: import scipy.misc 

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

Orz,但如果我安装PIL,那么它会给我' 2014-11-10 09:24:46

+18

现在应该是Pillow而不是PIL。参考:https://pillow.readthedocs.org/ – 2014-11-23 23:45:31

+0

你节省了我的一天 - 但为什么scipy文档是如此之差!我的步骤是安装numpy + MKL> Pillow> Scipy都是从Irvine加州大学下载的,为Windows编译python模块。 – SIslam 2016-11-18 10:17:34

0

你需要一个Python图像库(PIL),但现在只有PIL是不够的,你最好安装Pillow。这很好。

+1

有一个评论,已接受的答案已经指出,应该使用'pillow'而不是'PIL'。我认为将它作为答案添加它并不是一个好主意,但如果你解释了原因,它会更有用。谢谢。 – lrnzcig 2016-08-20 14:36:59

6

您需要Python影像库(PIL),但唉! PIL项目似乎已被放弃。尤其是,它尚未被移植到Python 3.因此,如果您想在Python 3中使用PIL功能,那么您最好使用Pillow,这是PIL的半官方分支,似乎正在积极开发。其实,如果你需要一个现代的PIL实现,我会推荐枕头。这与pip install pillow一样简单。由于它与PIL使用相同的名称空间,因此它本质上是一种直接替换。

这个叉子是如何“半官方”?你可能会问。该About页面枕头文档中这样说:

由于自上次PIL释放出更多时间的推移,一个 新PIL释放的可能性减小。不过,我们还没有听到官方的“PIL 已经死亡”的公告。所以如果你还想支持PIL,请首先在这里报告问题 ,然后在这里打开相应的Pillow门票。

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

然而,在official PIL site最近PIL释放刊登于2009年11月15日,我想我们可以有把握地宣称枕头为国际私法后的继任者(在本文写作)近八年没有新版本的。所以,即使你不需要Python 3支持,我建议你不要使用PyPI中的古老的PIL 1.1.6发行版,只需安装新的,最新的,兼容的Pillow。

1
python -m pip install pillow 

这对我有效。

1

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

pip install pillow 

注意,所选的答案已经过时。见 SciPy

注意,枕头(https://python-pillow.org/)不是SciPy的的依赖的文档,但低于表中所列的图像处理功能不可用没有它。

3

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]) 
相关问题