2

次のコードで Python がクラッシュするのはなぜですか? 画像をダウンロードしてnumpy配列に変換するより簡単で良い方法はありますか?

from pylab import *
from urllib import request
captcha=imread(request.urlopen('http://pastebin.com/etc/CaptchaSecurityImages.php?width=100&height=35&characters=4&b=123'))

これにより、スタック トレースを出力するだけでなく、Python インタープリターが終了することに注意してください。

4

1 に答える 1

7

いくつかの問題:

  1. imreadはイメージ タイプを検出できず、デフォルトは になりpngます。
  2. matplotlib の_png.read_png は、Python 3 で urllib.request object を使用してクラッシュします
  3. オブジェクトにrequest.urlopenはシーク機能がなく、PIL では機能しません (PIL は matplotlib で非 png 画像を読み取るために使用されます)。

このコードは win-amd64-py3.3 で動作します:

from pylab import *
from urllib import request
from io import BytesIO
url = 'http://pastebin.com/etc/CaptchaSecurityImages.php?width=100&height=35&characters=4&b=123'
data = BytesIO(request.urlopen(url).read())
captcha = imread(data, format='jpg')
于 2013-03-03T08:16:17.273 に答える