比较opencv,pillow,matplotlib,skimage读取图像的速度比

news2024/11/18 17:40:01

上面这些库都被广泛用于图像处理和计算机视觉任务;

不同的图像读取库(OpenCV,Pillow,matplotlib和skimage)的读取速度,是怎么样的一个情况?

下面分别从读取速度,以及转换到RGB通道的numpy格式两方面进行比较,

Python代码如下:


# 导入OpenCV库,用于处理图像  
import cv2  
  
# 从PIL库导入Image模块,用于处理图像  
from PIL import Image  
  
# 导入time库,用于计算和记录时间  
import time  
  
# 导入matplotlib.image模块,用于读取图像  
import matplotlib.image as mpimg # mpimg 用于读取图片  
  
# 导入numpy模块,用于对图像进行操作和处理  
import numpy as np  
  
# 从skimage库导入io模块,用于读取图像  
from skimage import io  
  
# 定义一个函数,名为opencv_i,用于测试OpenCV读取图像的速度  
def opencv_i():  
    # 记录开始时间  
    st = time.time()  
      
    # 使用OpenCV的imread函数读取图像,'./images.jpg'是图像文件的路径  
    img = cv2.imread("./images.jpg")  
      
    # 打印从开始到读取图像完成所需的时间  
    print(f"cv2 read take time {time.time() - st} s")  
      
    # 将读取的图像从BGR格式转换为RGB格式,BGR是OpenCV默认的色彩空间  
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)  
      
    # 记录结束时间  
    end = time.time()  
      
    # 打印从开始到图像转换为RGB格式所需的总时间  
    print(f"opencv2 total take time {end - st} s,to rgb numpy format")  
  
# 定义一个函数,名为pillow_i,用于测试Pillow读取图像的速度  
def pillow_i():  
    # 记录开始时间  
    st = time.time()  
      
    # 使用Pillow的Image模块的open函数读取图像,'./images.jpg'是图像文件的路径  
    im = Image.open("./images.jpg")  
      
    # 打印从开始到读取图像完成所需的时间  
    print(f"pillow read take time {time.time() - st} s")  
      
    # 将Pillow的Image对象转换为numpy数组,以便后续进行数值操作  
    output = np.array(im)  
      
    # 记录结束时间  
    end = time.time()  
      
    # 打印从开始到转换为numpy数组所需的总时间,以及转换为RGB格式(numpy数组)的说明  
    print(f"pillow rgb numpy,total take time {end - st} s,to rgb numpy format")  
  
# 定义一个函数,名为matplot_i,用于测试matplotlib读取图像的速度  
def matplot_i():  
    # 记录开始时间  
    st = time.time()  
      
    # 使用matplotlib的imread函数读取图像,'./images.jpg'是图像文件的路径  
    lena = mpimg.imread('./images.jpg')   
      
    # 记录结束时间  
    end = time.time()  
      
    # 打印从开始到读取图像完成所需的时间,以及转换为RGB格式(numpy数组)的说明  
    print(f"matplot read take time {end - st} s,to rgb numpy format")  
  
# 定义一个函数,名为skimage_i,用于测试skimage读取图像的速度  
def skimage_i():  
    # 记录开始时间  
    st = time.time()  
      
    # 使用skimage的io模块的imread函数读取图像,'./images.jpg'是图像文件的路径  
    img = io.imread('images.jpg')  
      
    # 记录结束时间  
    end = time.time()  
      
    # 打印从开始到读取图像完成所需的时间,以及转换为RGB格式(numpy数组)的说明  
    print(f"skimage read take time {end - st} s,to rgb numpy format")  
  
# 打印30个破折号,用于分隔测试结果  
print("-"*30)  
# 调用opencv_i函数,测试OpenCV读取图像的速度并输出结果  
opencv_i()  
# 打印30个破折号,用于分隔测试结果  
print("-"*30)  
# 调用pillow_i函数,测试Pillow读取图像的速度并输出结果  
pillow_i()  
# 打印30个破折号,用于分隔测试结果  
print("-"*30)  
# 调用matplot_i函数,测试matplotlib读取图像的速度并输出结果  
matplot_i()  
# 打印30

运行结果如下:

从结果可以看到速度方面,opencv 最快,matplotlib 与 skimage库略微慢一点, pillow库相差的更多一点;

由于每个人的运行环境,图像大小,数量等因素的差异,本结果仅仅作为一个小小的参考;

个人水平有限,有问题随时联系;

欢迎一键三连~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

文心一言向全社会开放

大家好,我是洋子 今天和大家宣传一件令人激动的事情 8月31日,文心一言率先向全社会全面开放。广大用户可以在应用商店下载“文心一言APP”或登陆“文心一言官网(https://yiyan.baidu.com)体验。同时,企业用户可以直接登陆百度智能云千帆大模…

云渲染平台是如何收费的?

现在的云渲染平台实在太多了,那么多平台,他们都是如何收费的呢?这篇文章我们就一块来看看吧。 一、渲染100(http://www.xuanran100.com?ycode1a12) 渲染100位于成都,是国内知名的云渲染公司,15分钟2毛60分钟8毛非常适…

《Flink学习笔记》——第十二章 Flink CEP

12.1 基本概念 12.1.1 CEP是什么 1.什么是CEP? 答:所谓 CEP,其实就是“复杂事件处理(Complex Event Processing)”的缩写;而 Flink CEP,就是 Flink 实现的一个用于复杂事件处理的库&#xff08…

Java之API详解之BigDecimal类的详细解析

7 BigDecimal类 7.1 引入 首先我们来分析一下如下程序的执行结果: public class BigDecimalDemo01 {public static void main(String[] args) {System.out.println(0.09 0.01);}} 这段代码比较简单,就是计算0.09和0.01之和,并且将其结果…

模拟电子技术基础学习笔记三 PN结

采用不周的掺杂工艺,将P型半导体与N型半导体制作在同一块硅片上,在它们的交界面就形成PN结。 扩散运动 物质总是从浓度高的地方向浓度低的地方运动,这种由于浓度差而产生的运动称为扩散运动。 空间电荷区 - 耗尽层 漂移运动 在电场力的作…

【马蹄集】第二十四周——高精度计算专题

高精度计算专题 目录 MT2191 整数大小比较MT2192 AB problemMT2193 A-B problemMT2194 大斐列MT2195 升级版斐波那契数列MT2196 2的N次幂 MT2191 整数大小比较 难度:黄金    时间限制:1秒    占用内存:128M 题目描述 给出两个正整数&…

邮件群发的功能优势

动态IP切换登录发送 保证送达率 软件可自动切换不同的动态拨号VPS的IP,登录不同的第三方免费邮件发送方,模拟真实环境,一个IP登录一个小号邮件账号发送,这样可以绕过因为一个IP同时登录同个第三方免费邮箱的不同账户而造成的屏蔽&…

HUAWEI华为笔记本MateBook 16 2021款 锐龙版 R7 集显(CREM-WFD9)原厂Win10系统

华为原装出厂系统自带指纹、显卡、声卡、网卡等所有驱动、出厂主题壁纸LOGO、Office办公软件、华为电脑管家等预装程序 链接:https://pan.baidu.com/s/18XIYnasYFfLxSKS6LfoHvw?pwdly6j 提取码:ly6j

WOFOST模型与PCSE模型应用丨数据准备,模型参数解读与设置,模型运行与结果输出,模型结果解读与决策支持等

目录 专题一 理论基础 专题二 数据准备 专题三 WOFOST模型基础 专题四 PythonCropSimulationEnvironment 专题五 案例拓展 更多应用 WOFOST(WorldFoodStudies)和PCSE(PythonCropSimulationEnvironment)是两个用于农业生产模…

安装使用electron

一、安装node和npm 运行cmd查看是否安装及版本号 npm -v node -v 二、安装electron npm直接安装会报错缺少什么文件,使用cnpm进行安装 直接安装cnmp后,再用cnmp命令安装可能会报错Error: Cannot find module ‘node:util’ 原因是npm版本与cnpm版本…

高中学历,月薪3000服务员,用四个月“改命”进国企,变身网络安全工程师

最近几年,不少年轻人都感到非常焦虑,压力大,迷茫。在时代变迁的洪流中,如何获得内心的平静呢? ——成长。 “只有认知突破,才能带来真正的成长。”这是雷军在8月14日年度演讲中提到的,近十年来…

OPENCV实现计算描述子

1、计算描述子 kp,des = sift.computer(img,kp) 2、其作用是进行特征匹配 3、同时计算关键点和描述 3.1、kp,des = sift.detectAnd Computer(img,...)

kali更换gnome并自定义登录界面

文章目录 安装gnome修改登录界面 Gnome是linux下比较好看的一款Linux图形化界面,发现网上的教程很多各式各样,有些还是错误的不能正确更换,或者不能修改登录界面 安装gnome 我们只需要执行sudo apt install gnome命令即可。 这个过程会花费很…

包含文心一言在内的首批国产大模型 全面开放

8月31起,国内 11 家通过《生成式人工智能服务管理暂行办法》备案的 AI 大模型产品将陆续上线,面向全社会开放。北京 5 家大模型产品分别是百度的 “文心一言”、抖音的 “云雀”、百川智能的 “百川大模型”、清华系 AI 公司智谱华章旗下的 “智谱清言”…

为什么过早的优化是万恶之源

为什么过早的优化是万恶之源? 缘起 Donald Knuth(高德纳) 是一位计算机科学界的著名学者和计算机程序设计的先驱之一。他被誉为 计算机科学的“圣经”《计算机程序设计艺术》的作者 ,提出了著名的“大O符号”来描述算法的时间复杂度和空间…

ABB PCD231B通信输入/输出模块

多通道输入和输出: PCD231B 模块通常配备多个输入通道和输出通道,用于连接传感器、执行器和其他设备。 通信接口: 这种模块通常支持各种通信接口,如以太网、串口(RS-232、RS-485)、Profibus、CAN 等&#…

MIMIC-IV数据提取教程

一、获取MIMIC-IV数据库 MIMIC-IV数据库需要申请权限,具体怎么申请我之前的博客发的有:MIMIC数据库申请流程 以最新的MIMIC-IV 2.2版本为例,首先打开页面拖动到最底端:https://physionet.org/content/mimiciv/2.2/ 直接下载解压下来&#x…

vue3中如何使用el-tooltip中的插槽达到换行效果

el-tooltip的content属性中的内容可以使用插槽来替换 话不多说&#xff0c;直接上代码 <el-tooltip effect"light" placement"top-start"><div slot"content" class"tips"> // 在这里运用插槽<p class"tip-tex…

dayjs格式转换成日期

目录 方法一&#xff1a; ​编辑方法二&#xff1a; 这个项目在筛选订单时间的时候是由前端进行筛选的&#xff0c;用的是adt-design-pro进行二开的&#xff0c;其中在用日期组件的时候遇到了一个问题&#xff0c;组件返回的是&#xff1a; 但是我需要的是年-月-日&#xff…

Fair|Fur —— 介绍

Hair Utils工具架&#xff0c;可快速设置毛发对象&#xff0c;及动画和解算&#xff1b; Guide Process工具架&#xff0c;用于设置毛发样式&#xff0c;可通过绘制皮肤属性来影响引导毛发的位置和方向&#xff1b; 创建毛发Fur&#xff0c;起始于一几何体&#xff0c;然后使用…