将Python get请求的响应(jpg内容)转换为Numpy数组

Blu*_*nix 7 arrays numpy python-3.x python-requests python-imageio

我的函数的工作流程如下:

  • 通过python get请求检索jpg
  • 将图像保存为 png(即使下载为 jpg)到磁盘上
  • 使用 imageio 从磁盘图像读取并将其转换为 numpy 数组
  • 使用数组

这就是我所做的保存:

response = requests.get(urlstring, params=params)
      if response.status_code == 200:
            with open('PATH%d.png' % imagenumber, 'wb') as output:
                output.write(response.content)
Run Code Online (Sandbox Code Playgroud)

这就是我将 png 加载并转换为 np.array 所做的事情

imagearray = im.imread('PATH%d.png' % imagenumber)
Run Code Online (Sandbox Code Playgroud)

由于我不需要永久存储我下载的内容,因此我尝试修改我的函数以便直接转换 Numpy 数组中的 response.content 。不幸的是,每个类似 imageio 的库都以相同的方式从磁盘读取 uri 并将其转换为 np.array。

我尝试了这个,但显然它不起作用,因为它需要输入 uri

response = requests.get(urlstring, params=params)
imagearray = im.imread(response.content))
Run Code Online (Sandbox Code Playgroud)

有什么办法可以克服这个问题吗?如何将我的response.content转换为np.array?

Mr *_* K. 5

imageio.imread 能够从 url 读取:

import imageio

url = "https://example_url.com/image.jpg"

# image is going to be type <class 'imageio.core.util.Image'>
# that's just an extension of np.ndarray with a meta attribute

image = imageio.imread(url)
Run Code Online (Sandbox Code Playgroud)

您可以在文档中查找更多信息,他们也有示例:https ://imageio.readthedocs.io/en/stable/examples.html