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]) 
相關問題