首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >将网页链接中的图片直接加载到NumPy数组中(Python)

将网页链接中的图片直接加载到NumPy数组中(Python)
EN

Stack Overflow用户
提问于 2017-05-19 04:22:56
回答 2查看 3.4K关注 0票数 3

我正在尝试将web上的JPEG图像资源转换为类似于scipy.misc.imread返回的数组的NumPy数组图像表示形式。而不是将镜像保存到磁盘,如下例所示:

代码语言:javascript
复制
import requests
from scipy import misc
def load_image(url):
    res = requests.get(url) 
    if res == 200 and 'jpeg' in res.headers['content-type']: 
        with open('image.jpg', 'wb') as fp: 
            for chunk in res: 
                fp.write(chunk)
        img_arr = misc.imread('image.jpg') 
        return img_arr
    else: 
        return None

我想将图像直接加载到内存中。有没有办法做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-19 06:32:09

既然你提到了scipy.misc.imread,我们就可以用它来隐藏Image.open的一部分。因此,实现将如下所示-

代码语言:javascript
复制
from scipy import misc

res = requests.get(url)
img_arr = misc.imread(BytesIO(res.content))

性能方面,它似乎可以与另一篇文章中列出的四个转换阶段相媲美。

票数 7
EN

Stack Overflow用户

发布于 2017-05-19 04:34:22

我找到了一个绕过写入磁盘的解决方案:

代码语言:javascript
复制
from io import BytesIO
import requests
import numpy as np 
from PIL import Image
def load_image(url): 
    res = requests.get(url)
    if res == 200 and 'jpeg' in res.headers['content-type']:
        img_arr = np.array(Image.open(BytesIO(res.content)))
        return img_arr
    else: 
        return None

据我所知,我正在三种不同的表示之间进行转换:bytes -> BytesIO -> PIL.Image -> np.array

有没有更好的方法呢?

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44057140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档