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(matplotlib 使用 PIL 来读取非 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 回答