如何通过URL打开图片(Python)
2018-01-23 13:35
375 查看
不论是用opencv还是PIL,skimage等库,在之前做图像处理的时候,几乎都是读取本地的图片。最近尝试爬虫爬取图片,在保存之前,我希望能先快速浏览一遍图片,然后有选择性的保存。这里就需要从url读取图片了。查了很多资料,发现有这么几种方法,这里做个记录。
本文用到的图片URL如下:
OpenCV的imread()只能加载本地的图片,并不能通过网址加载图片。但是,opencv的VideoCapture类可以从url加载视频。如果只用opencv的话,我们可以一个迂回的方式:先用VideoCapure加载网址下的图片,然后再传给Mat。
2
3
4
5
6
2
3
4
5
6
7
8
urlopen返回 一个类文件对象,它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样。然后把返回的类文件对象重新编码,转换为图片传给Mat。
2
3
4
5
6
requests能以字节的方式访问请求响应体,以上就是以请求返回的二进制数据创建一张图片的代码。
2
3
4
相对来说,这种方式应该是最简单的,因为skimage可以直接以imread()函数来读取网页图片,而不需要其他的辅助,也不需要迂回。
本文用到的图片URL如下:
img_src = 'http://wx2.sinaimg.cn/mw690/ac38503ely1fesz8m0ov6j20qo140dix.jpg'1
1.用OpenCV
OpenCV的imread()只能加载本地的图片,并不能通过网址加载图片。但是,opencv的VideoCapture类可以从url加载视频。如果只用opencv的话,我们可以一个迂回的方式:先用VideoCapure加载网址下的图片,然后再传给Mat。import cv2 cap = cv2.VideoCapture(img_src) if( cap.isOpened() ) : ret,img = cap.read() cv2.imshow("image",img) cv2.waitKey()1
2
3
4
5
6
2. OpenCV+Numpy+urllib
import numpy as np import urllib import cv2 resp = urllib.urlopen(img_src) image = np.asarray(bytearray(resp.read()), dtype="uint8") image = cv2.imdecode(image, cv2.IMREAD_COLOR) cv2.imshow("Image", image) cv2.waitKey(0)1
2
3
4
5
6
7
8
urlopen返回 一个类文件对象,它提供了如下方法:
read() , readline() , readlines() , fileno() , close() :这些方法的使用方式与文件对象完全一样。然后把返回的类文件对象重新编码,转换为图片传给Mat。
3.PIL+requests
import requests as req from PIL import Image from io import BytesIO response = req.get(img_src) image = Image.open(BytesIO(response.content)) image.show()1
2
3
4
5
6
requests能以字节的方式访问请求响应体,以上就是以请求返回的二进制数据创建一张图片的代码。
4. skimage
from skimage import io image = io.imread(img_src) io.imshow(image) io.show()1
2
3
4
相对来说,这种方式应该是最简单的,因为skimage可以直接以imread()函数来读取网页图片,而不需要其他的辅助,也不需要迂回。
相关文章推荐
- 如何通过URL打开图片(Python)
- Python 通过URL打开图片实例详解
- Python 通过URL打开图片的几种方式
- 如何通过URL获得网络上的图片
- 如何实现通过URL超链接打开IOS的APP
- 如何通过一个Url获得图片的大小
- python 使用 urllib.urlretrieve()下载网络图片,在本地打开提示文件损坏无法打开
- Python通过url获取图片的几种方法
- Python通过URL爬取图片
- Android 视频开发中如何通过url或者本地视频文件路径获得视频的第一帧图片
- 如何通过一个图片的URL得到该图片的尺寸大小?
- 使用Python和OpenCV通过网址URL获取图片
- 如何在单文档中通过打开显示图片
- javascript中如何通过被打开的窗体在opener窗体中添加option选项javascript
- 给Python中通过urlopen/urlretrieve获取网页的过程中,添加gzip的解压缩支持
- Linux下如何指定某一类型程序用特定程序打开(通过binfmt_misc)
- python(如何计算通过考试的female人数)
- GMF:如何在不打开Editor的情况下生成图片
- Android通过URL查看图片
- 用python简单处理图片(1):打开\显示\保存图像