【问题标题】:Using scipy colors and imsave on a OS X 10.7 (Lion)在 OS X 10.7 (Lion) 上使用 scipy 颜色和 imsave
【发布时间】:2012-03-24 04:47:53
【问题描述】:

我正在尝试在 OS X 10.7 上运行 imsave 和 imshow 以及处理数组中颜色的基本 scipy 功能,但无济于事。这是我的代码,然后我将发布我的错误。有什么方法可以永久修复或解决此问题,以便我可以在我的 Mac 上使用此功能?我已经在运行 Ubuntu 的 Linux 机器上运行了相同的代码并取得了成功。

from numpy import *
from scipy import *

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

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


imsave('foo.png',a)

如果这工作正常,我应该简单地得到一个 500x400 像素的黑框,并在左上角的 100x200 像素内有一个绿色框。 但是我得到了这个错误

"Traceback(最近一次调用最后一次): 文件“colorstuff.py”,第 10 行,在 imsave('foo.png',a) NameError: name 'imsave' 未定义"

还有一个类似的 imshow 错误。

关于如何避免此错误的任何想法?

(在旁注中,我尝试从 scipy.misc 导入并得到完全相同的错误)

【问题讨论】:

    标签: python numpy osx-lion scipy


    【解决方案1】:

    来自 SciPy 手册:

    请注意,Python Imaging Library (PIL) 不是 SciPy 的依赖项,因此 pilutil 模块在未安装 PIL 的系统上不可用。

    您需要为 OSX 安装 PIL。我不确定它是否可用。

    【讨论】:

      【解决方案2】:

      编辑:

      我误读了你的问题。我认为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

      【讨论】:

      • 我刚刚尝试运行您在其中的内容,但立即出现错误,告诉我没有名为 Image 的模块。这是内置在python中的吗?或者那是从哪里来的?
      • python imaging library。这很奇怪......你必须拥有它,否则scipy.misc.imsave 将不可用......(或者它会抛出一个错误,无论如何。imsave 只是Image 的一个薄包装。)
      • 您需要从 PIL import Image 改为。试一试,看看是否可行...
      • Joe,我收到了一个类似的错误,告诉我没有名为 PIL 的模块
      • 所以,from scipy.misc import imsave 有效,但 import Image 无效?我很困惑......当你做import scipy.misc.pilutil时会发生什么? (imsave其实在pilutil)可以访问scipy.misc.pilutil.Image吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-04
      • 1970-01-01
      • 2012-12-30
      相关资源
      最近更新 更多