2012-03-06 11 views
2

OS X 10.7上の配列の色を扱うimsaveとimshowと基本scipy機能を無駄に使用しようとしています。ここに私のコードがあり、それに続いてエラーを投稿します。私のMacでこの機能を使うことができるように、これを恒久的な方法で修正または回避する方法はありますか?私はUbuntuを実行しているLinuxマシンでこのコードを実行し、成功しました。OS X 10.7(ライオン)でscipy色とimsaveを使用

from numpy import * 
from scipy import * 

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

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


imsave('foo.png',a) 

これが正しく動作すれば、左上隅の100x200ピクセルの中に500x400ピクセルのブラックボックスと緑色のボックスが表示されます。 代わりに、私はこのエラー

「トレースバック(最新の呼び出しの最後): ファイル "を取得colorstuff.py"、10行目、 imsaveで( 'foo.png'、A) NameError:名 'imsave' を定義されていません "

と同様のエラーimshowです。

このエラーを回避するにはどうすればいいですか?

(追記に、私はscipy.miscからインポートしようとしたとまったく同じエラーを取得している)

答えて

0

編集:

私はあなたの質問を読み違えます。私はimsaveがあなたのイメージを正しく保存していないと思っていましたが、それをインポートできました。

scipy.misc.imsaveは、PIL (the python imaging library)の周りの単なる薄いラッパーです。 PILをインストールする必要があります。

PILを直接使用するとどうなりますか?

scipy.misc.imsaveImageが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名前空間を使用しないでください。 1つまたは2つの追加機能を備えたのはちょうどnumpyです。 すべてscipyのはそのサブモジュールにあります。あなたがOSX用のPILをインストールする必要が

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.

:(例えば from scipy.misc import imsave

+0

私はあなたがそこにあったものを実行しようとしましたが、Imageという名前のモジュールがないことを瞬時にエラーが表示されました。それはPythonに組み込まれていますか?どこから来ているのですか? – KevinShaffer

+0

それは[pythonイメージングライブラリ](http://www.pythonware.com/products/pil/)です。それは奇妙です...あなたはそれを持っていなければなりません、そうでなければ 'scipy.misc.imsave'は利用できません。(あるいは、どんな速度でもエラーを投げます。'imsave'は' Image'の周りの薄いラッパーです) –

+0

代わりに 'PIL import Image'から行う必要があります。それを試してみてください... –

1

scipyのダウンロードマニュアルから、あなたが直接必要なものをインポートします。私はそれが利用可能かどうかわからない。

関連する問題