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中的进程分支fork和exec详解
Apr 11 Python
Python cookbook(数据结构与算法)字典相关计算问题示例
Feb 18 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
Python使用微信itchat接口实现查看自己微信的信息功能详解
Aug 22 Python
python如何求数组连续最大和的示例代码
Feb 04 Python
Python xlrd模块导入过程及常用操作
Jun 10 Python
python 绘制国旗的示例
Sep 27 Python
Python命令行参数定义及需要注意的地方
Nov 30 Python
BeautifulSoup中find和find_all的使用详解
Dec 07 Python
Python的logging模块基本用法
Dec 24 Python
python 详解turtle画爱心代码
Feb 15 Python
python数字图像处理之对比度与亮度调整示例
Jun 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基础知识:类与对象(1)
2006/12/13 PHP
PHP采集腾讯微博的实现代码
2012/01/19 PHP
PHP中替换键名的简易方法示例详解
2014/01/07 PHP
在IE上直接编辑网页内容的js代码(IE地址栏js)
2009/04/27 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
基于JavaScript 类的使用详解
2013/05/07 Javascript
图片翻转效果具体实现代码
2014/01/09 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
js生成的验证码的实现与技术分析
2014/09/17 Javascript
jQuery中:image选择器用法实例
2015/01/03 Javascript
jquery实现手机号码选号的方法
2015/07/31 Javascript
jQuery动态星级评分效果实现方法
2015/08/06 Javascript
seajs加载jquery时提示$ is not a function该怎么解决
2015/10/23 Javascript
Node.js的Web模板引擎ejs的入门使用教程
2016/06/06 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
Django+Vue跨域环境配置详解
2018/07/06 Javascript
nodejs dgram模块广播+组播的实现示例
2019/11/04 NodeJs
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
python支持断点续传的多线程下载示例
2014/01/16 Python
Python实现统计单词出现的个数
2015/05/28 Python
Python抓取百度查询结果的方法
2015/07/08 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
Python 数据结构之队列的实现
2017/01/22 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
利用pyinstaller将py文件打包为exe的方法
2018/05/14 Python
Python面向对象程序设计之继承与多继承用法分析
2018/07/13 Python
Python实现带下标索引的遍历操作示例
2019/05/30 Python
Python web框架(django,flask)实现mysql数据库读写分离的示例
2020/11/18 Python
英国领先的在线礼品店:Getting Personal
2019/09/24 全球购物
一份Java笔试题
2012/02/21 面试题
技校学生个人职业生涯规划范文
2014/03/03 职场文书
第二批党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2015年煤矿工作总结
2015/04/28 职场文书
2016优秀护士求职自荐信
2016/01/28 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python