Python 通过URL打开图片实例详解


Posted in Python onJune 01, 2017

Python 通过URL打开图片实例详解

不论是用OpenCV还是PIL,skimage等库,在之前做图像处理的时候,几乎都是读取本地的图片。最近尝试爬虫爬取图片,在保存之前,我希望能先快速浏览一遍图片,然后有选择性的保存。这里就需要从url读取图片了。查了很多资料,发现有这么几种方法,这里做个记录。

本文用到的图片URL如下:

img_src = 'http://wx2.sinaimg.cn/mw690/ac38503ely1fesz8m0ov6j20qo140dix.jpg'

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()

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)

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()

requests能以字节的方式访问请求响应体,以上就是以请求返回的二进制数据创建一张图片的代码。

4. skimage

from skimage import io
image = io.imread(img_src)
io.imshow(image)
io.show()

相对来说,这种方式应该是最简单的,因为skimage可以直接以imread()函数来读取网页图片,而不需要其他的辅助,也不需要迂回。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Python 相关文章推荐
用Python实现web端用户登录和注册功能的教程
Apr 30 Python
Python类的定义、继承及类对象使用方法简明教程
May 08 Python
简介Python中用于处理字符串的center()方法
May 18 Python
Python学习教程之常用的内置函数大全
Jul 14 Python
Python基于正则表达式实现检查文件内容的方法【文件检索】
Aug 30 Python
python 获取url中的参数列表实例
Dec 18 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
python Pandas如何对数据集随机抽样
Jul 29 Python
python树的同构学习笔记
Sep 14 Python
flask的orm框架SQLAlchemy查询实现解析
Dec 12 Python
Tensorflow使用Anaconda、pycharm安装记录
Jul 29 Python
Python logging模块进行封装实现原理解析
Aug 07 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 #Python
python 内置函数filter
Jun 01 #Python
python读取二进制mnist实例详解
May 31 #Python
Python算术运算符实例详解
May 31 #Python
Python简单的制作图片验证码实例
May 31 #Python
详解python的webrtc库实现语音端点检测
May 31 #Python
python实现决策树C4.5算法详解(在ID3基础上改进)
May 31 #Python
You might like
php 删除数组元素
2009/01/16 PHP
php面向对象全攻略 (四)构造方法与析构方法
2009/09/30 PHP
JoshChen_web格式编码UTF8-无BOM的小细节分析
2013/08/16 PHP
PHP获取网页标题的3种实现方法代码实例
2014/04/11 PHP
ThinkPHP中的关联模型注意点
2014/06/16 PHP
php设计模式之模板模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
15 个 JavaScript Web UI 库
2010/05/19 Javascript
解决javascript:window.close()在chrome,Firefox下失效的问题
2013/05/07 Javascript
JS实现浏览器状态栏显示时间的方法
2015/10/27 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
javascript 小数乘法结果错误的处理方法
2016/07/28 Javascript
通过学习bootstrop导航条学会修改bootstrop颜色基调
2017/06/11 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
vue 中url 链接左边的小图标更改问题
2019/12/30 Javascript
如何使用Jquery动态生成二级选项列表
2020/02/06 jQuery
详解webpack-dev-middleware 源码解读
2020/03/23 Javascript
python使用append合并两个数组的方法
2015/04/28 Python
Python中的lstrip()方法使用简介
2015/05/19 Python
matplotlib调整子图间距,调整整体空白的方法
2018/08/03 Python
解决使用pycharm提交代码时冲突之后文件丢失找回的方法
2018/08/05 Python
六行python代码的爱心曲线详解
2019/05/17 Python
python Django 创建应用过程图示详解
2019/07/29 Python
解决TensorFlow模型恢复报错的问题
2020/02/06 Python
Tensorflow 卷积的梯度反向传播过程
2020/02/10 Python
在python3.64中安装pyinstaller库的方法步骤
2020/06/02 Python
Python关于拓扑排序知识点讲解
2021/01/04 Python
HTML4和HTML5之间除了相似以外的10个主要不同
2012/12/13 HTML / CSS
使用HTML5 Canvas为图片填充颜色和纹理的教程
2016/03/21 HTML / CSS
在线吉他课程,学习如何弹吉他:Fender Play
2019/02/28 全球购物
最新英语专业学生求职信范文
2013/09/21 职场文书
会计自荐书
2013/12/02 职场文书
出差报告怎么写
2014/11/06 职场文书
工作失职自我检讨书
2015/05/05 职场文书
解决redis批量删除key值的问题
2022/03/23 Redis
python模拟浏览器 使用selenium进入好友QQ空间并留言
2022/04/12 Python
linux目录管理方法介绍
2022/06/01 Servers