将JPEG从URL加载到skimage,而无需临时文件

use*_*702 5 python urllib2 scikit-learn scikit-image imread

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

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

有什么方法可以直接传递urlopen(url).read()imread.imread()(或任何其他图像阅读库)?

Mah*_*oud 6

import matplotlib.pyplot  as plt
from skimage import io

image=io.imread ('https://i.stack.imgur.com/yt0Xo.jpg')

plt.imshow(image)
plt.show()
Run Code Online (Sandbox Code Playgroud)

  • 嘿@AleksanderLidtke。谢谢!我认为代码非常简单且不言自明,尝试提供您自己的图像 URL。 (4认同)

Cyr*_*bil 5

imread文档

图像文件名,例如test.jpg 或URL

因此,您可以直接传递您的URL:

io.imread(url)
Run Code Online (Sandbox Code Playgroud)

请注意,它仍然会创建一个用于处理图像的临时文件...


编辑:

该库imread还具有imread_from_blob接受字符串作为输入的方法。因此,您可以将数据直接传递给此函数。

from imread import imread_from_blob
img_data = imread_from_blob(data, 'jpg')

>>> img_data
array([[[ 23, 123, 149],
[ 22, 120, 147],
[ 22, 118, 143],
...,
Run Code Online (Sandbox Code Playgroud)

第二个参数是通常与此斑点关联的扩展名。如果没有给出,则detect_format用于自动检测。