2012-03-06 138 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。我不确定它是否可用。