【python】OpenCV—Open URL Images

在这里插入图片描述

文章目录

  • 1、需求描述
  • 2、方法一,numpy+urlopen
  • 3、方法二,scikit-learn
  • 4、涉及到的库
    • urllib.request.urlopen
    • skimage.io.imread
  • 5、参考文章

1、需求描述

给出一个 url 链接,显示该链接对应的图片

2、方法一,numpy+urlopen

# 导入包
import numpy as np
import cv2
import ssl
import sysssl._create_default_https_context = ssl._create_unverified_context  # 解决SSL 证书的验证问题
# 如果是Python2
if sys.version_info.major == 2:from urllib import urlopen
# 如果是Python3
elif sys.version_info.major == 3:from urllib.request import urlopen# 方法1:OpenCV、NumPy 和 urllibdef url_to_image(url):# 下载图像,将其转换为NumPy数组,然后将其读入OpenCV格式resp = urlopen(url)image = np.asarray(bytearray(resp.read()), dtype="uint8")image = cv2.imdecode(image, cv2.IMREAD_COLOR)# 返回图片return image# 初始化要下载的图像 URL 列表
urls = ["https://pyimagesearch.com/wp-content/uploads/2015/01/opencv_logo.png","https://pyimagesearch.com/wp-content/uploads/2015/01/google_logo.png","https://image.9game.cn/2020/7/9/169171359.jpg",
]# 遍历图像 URL
for url in urls:# 下载图片网址并显示print("downloading %s" % (url))image = url_to_image(url)cv2.imshow("Image", image)cv2.waitKey(0)

会先下载图片,再进行显示

downloading https://pyimagesearch.com/wp-content/uploads/2015/01/opencv_logo.png
downloading https://pyimagesearch.com/wp-content/uploads/2015/01/google_logo.png
downloading https://image.9game.cn/2020/7/9/169171359.jpg

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

3、方法二,scikit-learn

# 导入包
from skimage import io
import cv2# 初始化要下载的图像 URL 列表
urls = ["https://image.9game.cn/2020/7/9/169171359.jpg",
]# 方法2:scikit-imagefor url in urls:# 使用 scikit-image 下载图像print("downloading %s" % (url))image = io.imread(url)cv2.imshow("Incorrect", image)cv2.imshow("Correct", cv2.cvtColor(image, cv2.COLOR_BGR2RGB))cv2.waitKey(0)

在这里插入图片描述

在这里插入图片描述

4、涉及到的库

urllib.request.urlopen

是Python标准库中urllib.request模块的一个非常实用的函数,用于打开一个URL(统一资源定位符),并返回一个类似文件的对象。这个对象提供了许多方法来处理URL响应,比如读取响应的内容、获取响应头信息等。

下面是一个使用urllib.request.urlopen的基本示例:

import urllib.request  # 定义一个URL  
url = 'http://example.com'  # 使用urlopen打开URL  
with urllib.request.urlopen(url) as response:  # 读取所有内容  html = response.read()  # 如果你想看到HTML内容,可以解码并打印  print(html.decode('utf-8'))  # 你也可以获取其他信息,比如状态码  print(response.status)  # 获取响应头  print(response.getheaders())

注意几个关键点:

  • 使用with语句:urlopen返回的对象是一个上下文管理器(context manager),这意味着你可以使用with语句来自动处理资源的打开和关闭。这是处理文件和网络请求时推荐的做法,因为它可以保证即使在发生异常时也能正确地关闭资源。
  • 读取响应内容:通过调用.read()方法,你可以读取响应体的全部内容。注意,这将作为字节对象返回,因此你可能需要将其解码为字符串(如上例所示,使用.decode(‘utf-8’))。
  • 处理异常:在实际应用中,处理网络请求时可能会遇到各种异常,如urllib.error.HTTPError(HTTP错误)和urllib.error.URLError(URL错误)。你应该使用try…except块来捕获这些异常,并适当地处理它们。
  • 请求头:有时你可能需要自定义请求头,比如设置用户代理或发送Cookie。这可以通过创建一个urllib.request.Request对象并将其传递给urlopen来实现。
import urllib.request  url = 'http://example.com'  
headers = {'User-Agent': 'Mozilla/5.0'}  request = urllib.request.Request(url, headers=headers)  
with urllib.request.urlopen(request) as response:  # ... 处理响应 ...
通过这种方式,你可以更灵活地控制你的网络请求。

skimage.io.imread

skimage.io.imread 是 Scikit-image 库中用于读取图像文件的一个函数。Scikit-image 是一个用于图像处理的Python库,它提供了大量的图像处理算法和工具,非常适合进行科学研究。imread 函数是其中非常基础且常用的一个函数,它能够从给定的文件路径读取图像,并将其作为 NumPy 数组返回。

以下是使用 skimage.io.imread 的一个简单示例:

python
from skimage import io  # 定义图像文件的路径  
image_path = 'path/to/your/image.jpg'  # 使用 imread 读取图像  
image = io.imread(image_path)  # 现在 image 是一个 NumPy 数组,你可以使用它进行图像处理  
# 例如,打印图像的形状(高度、宽度、通道数)  
print(image.shape)  # 如果你正在使用 Jupyter Notebook 或其他支持图像显示的IDE,  
# 你可以使用 matplotlib 或其他库来显示图像  
import matplotlib.pyplot as plt  plt.imshow(image)  
plt.axis('off')  # 不显示坐标轴  
plt.show()

在这个示例中,image_path 应该替换为你想要读取的图像文件的实际路径。io.imread(image_path) 会读取该图像文件,并将其作为一个 NumPy 数组 image 返回。这个数组通常有三个维度,分别对应于图像的高度、宽度和颜色通道数(对于彩色图像,通常是 RGB 三个通道)。

skimage.io.imread 支持多种图像格式,包括但不限于 JPEG、PNG、TIFF 等。它会自动根据文件内容推断图像的格式,并相应地读取图像数据。

需要注意的是,从 Scikit-image 0.18 版本开始,skimage.io 模块中的函数(包括 imread)已经被标记为弃用(deprecated),并在未来的版本中可能会被移除。作为替代,Scikit-image 推荐使用 imageio.imread 函数来读取图像,imageio 是一个独立的库,提供了与 skimage.io 类似的功能,并且更加灵活和强大。然而,在当前的许多项目中,skimage.io.imread 仍然被广泛使用,并且如果你正在使用 Scikit-image 的其他图像处理功能,那么继续使用 skimage.io.imread 可能是一个方便的选择。不过,对于新项目或寻找更长期支持的项目,考虑使用 imageio.imread 可能是一个好主意。

5、参考文章

参考学习来自:imutils基础(6)使用 Python 和 OpenCV 将 URL 转换为图像

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/383402.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux应用——socket函数及TCP通信

网络通信实质上也是实现进程间通信,只是与之前进程间通信不同的是,现在在不同的计算机上进行进程间通信。比如:利用QQ工具实现聊天,在两个电脑上有不同的QQ进程之间在通信。而网络通信是如何使用进程间通信呢?采用的是…

力扣高频SQL 50 题(基础版)第一题

文章目录 力扣高频SQL 50 题(基础版)第一题1757.可回收且低脂的产品题目说明思路分析实现过程准备数据:实现方式:结果截图: 力扣高频SQL 50 题(基础版)第一题 1757.可回收且低脂的产品 题目说…

pdf2docx - pdf 提取内容转 docx

文章目录 一、关于 pdf2docx主要功能限制 二、安装1、 PyPI2、从remote安装3、从源码安装4、卸载 三、转化 PDF例 1: convert all pages例 2: 转换指定页面例 3: multi-Processing例 4: 转换加密的pdf 四、提取表格五、命令行交互1、按页面范围2、按页码3、Multi-Processing 六…

Java之集合底层-数据结构

Java集合之数据结构 1 概述 数据结构是计算机科学中研究数据组织、存储和操作的一门学科。它涉及了如何组织和存储数据以及如何设计和实现不同的数据操作算法和技术。常见的据结构有线性数据结构(含数组、链表、栈和队列等),非线性数据结构…

探索算法系列 - 双指针

目录 移动零(原题链接) 复写零(原题链接) 快乐数(原题链接) 盛最多水的容器(原题链接) 有效三角形的个数(原题链接) 查找总价格为目标值的两个商品&…

数据库表结构创建

一、原型图 二、分析 1、天气,值字段只有实测值,可用一个字段表示(单位、来源同上) 2、气温有默认值与实测值两个选项,一个字段无法表示默认值与实测值(单位,来源同上) 3、因为有…

SpringMVC 控制层框架-下

五、SpringMVC其他扩展 1. 异常处理机制 1.1 异常处理概念 开发过程中是不可避免地会出现各种异常情况,例如网络连接异常、数据格式异常、空指针异常等等。异常的出现可能导致程序的运行出现问题,甚至直接导致程序崩溃。因此,在开发过程中&a…

LoFTR关键点特征匹配算法环境构建与图像匹配测试Demo

0,LoFTR CVPR 2021论文《LoFTR: Detector-Free Local Feature Matching with Transformers》开源代码 1,项目主页 LoFTR: Detector-Free Local Feature Matching with Transformers 2,GItHub主页 GitHub - zju3dv/LoFTR: Code for "…

Vue 状态管理 Vue CLI

Vue 状态管理 & Vue CLI 1、状态管理2、集中状态管理2.1 Vuex2.1.1 Vuex核心概念2.1.2 Vuex Store实例2.1.3 Vuex Getter2.1.4 Vuex Mutation2.1.4 Vuex Actions2.1.4 Vuex Module 2.2 Pinia2.2.1功能增强 3、Vuex 实现原理4、Pinia 实现原理5、CLI5.1 实现 1、状态管理 将…

vue 搜索框

效果 创建搜索组件: 在Vue项目中,首先需要创建一个搜索组件。这个组件通常包含一个输入框和一个搜索按钮。使用v-model指令将输入框与组件的数据属性(如searchKeyword)进行双向绑定,以便获取用户输入的关键词。处理搜索…

MongoDB教程(二十一):MongoDB大文件存储GridFS

💝💝💝首先,欢迎各位来到我的博客,很高兴能够在这里和您见面!希望您在这里不仅可以有所收获,同时也能感受到一份轻松欢乐的氛围,祝你生活愉快! 文章目录 引言一、GridFS…

科技云报道:算网筑基AI注智,中国联通如何讲出AI时代的“新故事”?

科技云报道原创。 AI从未停止进化,也从未停止给人类带来惊喜。 从ChatGPT代表的文生文、Dall-E代表的文生图,到Sora代表的文生视频,Suno为代表的文生音乐,生成式AI的“暴力美学”持续突破内容生产的天花板,大模型技术…

【LLM】-07-提示工程-聊天机器人

目录 1、给定身份 1.1、基础代码 1.2、聊天机器人 2、构建上下文 3、订餐机器人 3.1、窗口可视化 3.2、构建机器人 3.3、创建JSON摘要 利用会话形式,与具有个性化特性(或专门为特定任务或行为设计)的聊天机器人进行深度对话。 在 Ch…

vue import from

vue import from 导入文件,从XXXX路径;引入文件 import xxxx from “./minins/resize” import xxxx from “./minins/resize.js” vue.config.js 定义 : resolve(src);就是指src 目录 import xxxx from “/utils/auth” im…

新版GPT-4omini上线!快!真TM快!

大半夜,OpenAI突然推出了GPT-4o mini版本。 当我看到这条消息时,正准备去睡觉。mini版本质上是GPT-4o模型的精简版本,没有什么革命性的创新,因此我并没有太在意。 结果今天早上一觉醒来发现伴随GPT-4o mini上线,官网和…

RAS--APEI 报错解析流程(2)

RAS--APEI 报错解析流程(1) 除了APEI 中除了GHES会记录错误,在Post过程中的错误通常是通过BERT Table汇报 1.BERT Boot Error Record Table is used to report unhandled errors that occurred in a previous boot,it is reported as a ‘one-time polle…

stats 监控 macOS 系统

Stats 监控 macOS 系统 CPU 利用率GPU 利用率内存使用情况磁盘利用率网络使用情况电池电量 brew install stats参考 stats github

Ansible的脚本-----playbook剧本【上】

目录 1.playbook剧本组成 2.playbook剧本实战演练 2.1 实战演练一:给被管理主机安装httpd服务 2.2 实战演练二:定义、引用变量 2.3 实战演练三:指定远程主机sudo切换用户 2.4 实战演练四:when条件判断 2.5 实战演练五&…

ElasticSearch(六)— 全文检索

一、match系列查询 前面讲到的query中的查询,都是精准查询。可以理解成跟在关系型数据库中的查询类似。match系列的查询,是全文检索的查询。会通过分词进行评分,匹配,再返回搜索结果。 1.1 match 查询 "query": {&qu…

.Net Core 微服务之Consul(三)-KV存储分布式锁

引言: 集合上两期.Net Core 微服务之Consul(一)(.Net Core 微服务之Consul(一)-CSDN博客) 。.Net Core 微服务之Consul(二)-集群搭建)(.Net Core 微服务之Consul(二)-集群搭建-CSDN博客) 目录 一. Consul KV 存储 1. KV 存储介绍 1.1 数据模型 1.2 一致性和…