2013-03-03 63 views
2

为什么下面的代码会崩溃python?有没有更简单/更好的方式来下载图像并将其转换为numpy数组?将图像作为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解释器退出而不是仅打印堆栈跟踪。

+0

它不会崩溃:'NameError:名字 'imread' 不是defined'。 – Bakuriu 2013-03-03 06:52:16

+0

@Bakuriu你必须导入pylab – Navin 2013-03-03 06:53:00

回答

4

几个问题:

  1. imread无法检测到的图像类型,默认为png
  2. matplotlib's _png.read_png crashes on Python 3 with urllib.request object
  3. request.urlopen对象缺少seek函数,不能与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') 
+0

我得到错误“无法导入名称请求” – 2017-10-11 17:32:52