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在ubuntu中的几种安装方法(小结)
Dec 08 Python
python递归实现快速排序
Aug 18 Python
Python面向对象之类的定义与继承用法示例
Jan 14 Python
PyQt5显示GIF图片的方法
Jun 17 Python
python matplotlib库绘制条形图练习题
Aug 10 Python
Django中提示消息messages的设置方式
Nov 15 Python
Django之全局使用request.user.username的实例详解
May 14 Python
keras 两种训练模型方式详解fit和fit_generator(节省内存)
Jul 03 Python
Python中的With语句的使用及原理
Jul 29 Python
记一次Django响应超慢的解决过程
Sep 17 Python
flask框架中的cookie和session使用
Jan 31 Python
Python实现将多张图片合成MP4视频并加入背景音乐
Apr 28 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利用str_replace防注入的方法
2013/11/10 PHP
利用PHPStorm如何开发Laravel应用详解
2017/08/30 PHP
jQuery bxCarousel实现图片滚动切换效果示例代码
2013/05/15 Javascript
js动态添加事件并可传参数示例代码
2013/10/21 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
Node.js中如何合并两个复杂对象详解
2016/12/31 Javascript
jQuery实现的浮动层div浏览器居中显示效果
2017/02/03 Javascript
js中的触发事件对象event.srcElement与event.target详解
2017/03/15 Javascript
Vue.js手风琴菜单组件开发实例
2017/05/16 Javascript
JS判断微信扫码的方法
2017/08/07 Javascript
详解vue渲染函数render的使用
2017/12/12 Javascript
vue.js使用v-model指令实现的数据双向绑定功能示例
2018/05/22 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
如何在Angular应用中创建包含组件方法示例
2019/03/23 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
2020/07/24 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python实现的多线程端口扫描功能示例
2017/01/21 Python
spyder常用快捷键(分享)
2017/07/19 Python
python实现简单遗传算法
2018/03/19 Python
对pandas replace函数的使用方法小结
2018/05/18 Python
深入浅析python 协程与go协程的区别
2019/05/09 Python
python3.6.8 + pycharm + PyQt5 环境搭建的图文教程
2020/06/11 Python
Django模型验证器介绍与源码分析
2020/09/08 Python
CSS3模拟动画下拉菜单效果
2017/04/12 HTML / CSS
CSS3 实现飘动的云朵动画
2020/12/01 HTML / CSS
Html5适配iphoneX刘海屏的简单实现
2019/04/09 HTML / CSS
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
写给老师的表扬信
2014/01/21 职场文书
公司任命书范本
2014/06/04 职场文书
积极心理学课程心得体会
2016/01/22 职场文书
MySQL 外键约束和表关系相关总结
2021/06/20 MySQL
MutationObserver在页面水印实现起到的作用详解
2022/07/07 Javascript
Python爬取奶茶店数据分析哪家最好喝以及性价比
2022/09/23 Python