2012-03-06 178 views
2

我試圖運行imsave和imshow和基本SciPy的功能與顏色排列在OS X 10.7處理無濟於事使用SciPy的顏色和imsave。這是我的代碼,然後我會發布我的錯誤。有什麼方法可以解決或永久性地解決這個問題,所以我可以在我的Mac上使用這個功能?我在運行Ubuntu的Linux機器上運行了相同的代碼,並取得了成功。在OS X 10.7(獅子)

from numpy import * 
from scipy import * 

a = zeros((3,500,400)) 

a[1,0:100,0:200] = 255 


imsave('foo.png',a) 

如果這個工作正常,我應該只是得到一個黑盒子500x400像素,在左上角有100×200像素內的綠色方塊。 而是我得到這個錯誤

「回溯(最近通話最後一個): 文件 「colorstuff.py」,10號線,在 imsave( 'foo.png',一個) NameError:名字 'imsave'未定義「

和imshow類似的錯誤。

有關如何避免此錯誤的任何想法?

(在旁註,我試圖從scipy.misc進口,並得到完全相同的錯誤)

回答

0

編輯:

我誤解你的問題。我認爲imsave沒有正確保存您的圖片,但您可以導入它。

scipy.misc.imsave只是圍繞PIL (the python imaging library)瘦包裝。你需要安裝PIL才能工作。

如果你只是直接使用PIL會發生什麼?從很多年前

scipy.misc.imsave日期時,Image不支持numpy的陣列。它沒有正式折舊,但它跳過了許多最近版本的PIL所不需要的箍。

如果你這樣做,會發生什麼:

import numpy as np 
import Image 

# It's easier to work with a MxNx3 array instead of a 3xMxN array in PIL 
a = np.zeros((500, 400, 3)) 
a[:100, :200, 1] = 255 

im = Image.fromarray(a.astype(np.uint8)) 
im.save('test.png') 

另外,避免做 from whatever import *。它只在那裏用於交互式使用。否則這是一個非常糟糕的主意。 (在 numpy的情況下,你用numpy版本覆蓋了很多python的內置函數,但它們並沒有做同樣的事情。)另外,不要使用基地 scipy命名空間。這只是 numpy與一個或兩個額外的功能。 scipy的所有在其子模塊中。導入您可以直接(如 from scipy.misc import imsave

+0

我只是試圖運行你有什麼在那裏,瞬間有一個錯誤,告訴我,有沒有模塊命名的圖像。這是內置於Python嗎?或來自哪裏? – KevinShaffer 2012-03-06 19:14:13

+0

這是[python圖像庫](http://www.pythonware.com/products/pil/)。這很奇怪......你必須擁有它,否則'scipy.misc.imsave'將無法使用......(或者無論如何它會引發錯誤。'imsave'就是圍繞'瘦包裝Image'。) – 2012-03-07 01:02:50

+0

你需要從'PIL進口Image'做代替。給它一個嘗試,看看是否可行... – 2012-03-07 01:22:25

1

需要的東西從SciPy的手冊:

Note that the Python Imaging Library (PIL) is not a dependency of SciPy and therefore the pilutil module is not available on systems that don’t have PIL installed.

您需要安裝PIL的OSX。我不確定它是否可用。