将URL从URL加载到skimage而不使用临时文件

时间:2015-08-27 08:41:50

标签: python scikit-learn urllib2 scikit-image imread

是否可以从URL加载skimage(numpy矩阵)格式的图像而无需创建临时文件?

skimage本身使用临时文件:https://github.com/scikit-image/scikit-image/blob/master/skimage/io/util.py#L23

有没有办法直接将ul传递给urlopen(url).read()(或任何其他图片阅读库)?

2 个答案:

答案 0 :(得分:1)

import matplotlib.pyplot  as plt
from skimage import io

image=io.imread ('https://YOUR-IMAGE-URL')

plt.imshow(image)
plt.show()

答案 1 :(得分:0)

有点棘手,但有效(在Python 3.4上)。 似乎skimage本身无法解析缓冲区中的图像。但无论如何它无论如何都会隐含地使用枕头。

您需要使用下载的数据填充BytesIO缓冲区,然后将其提供给PIL.Image,然后从中创建skimage.io.Image。

from urllib.request import urlopen
from io import BytesIO
from PIL import Image
from skimage import io

url = 'http://www.musicnowsg.com/wp-content/uploads/2013/12/grumpy-jazz-cat.jpg'
response = urlopen(url)
buf = BytesIO(response.read())
im = Image.open(buf)
a = io.Image(im)

io.imshow(a)
io.show()