2012-02-11 19 views
0

私は奇妙な問題を抱えています。次のコードは、スクリプトを早期に終了します。例外はスローされず、静かにシェルをリセットします。pil画像からnumpy配列への変換がスクリプトを停止します

img = Image.open(file_name) 
crop_box = (4, 18, 630, 464) 
img = img.crop(crop_box) 
arr = numpy.asarray(img, int) 

このように異なる変数を使用するように変更すると、完全に実行されます。

img = Image.open(file_name) 
crop_box = (4, 18, 630, 464) 
img2 = img.crop(crop_box) 
arr = numpy.asarray(img2, int) 

これはなぜ起こっているのですか? (バージョンはPython 2.7.2、PIL 1.1.7、numpy 1.6.1)

+0

これはhttp://stackoverflow.com/questions/3838446/pil-crop-and-paste-problem-cropping-doesnt-create-a-cropped-imageの複製ですか? –

+0

どのプラットフォームを使用していますか(Windows、OSX)? IPythonまたはEnthoughtを使用していますか? numpyの後に "print arr.size"を追加できますか? (私の小さなテストスクリプトは正常に動作しています) –

+0

Image.open()の後に "img.load()"を追加してみてください。 PILは遅延読み込みを行います。 img.load()はイメージをメモリに強制的に格納します。私はimg.load()によって解決された他の奇妙なPILの問題を抱えていました。 –

答えて

1

私はあなたがimg = img.crop(corp_box)を使うと元の画像オブジェクトは参照を持たないので、すぐにガベージコレクションを行います。

関連する問題