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

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

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

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

Python代码如下:

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库相差的更多一点;

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

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

欢迎一键三连~

相关推荐
He BianGu6 小时前
【WPF-VisionMaster】机器视觉通用平台V5.0版本发行说明
opencv·c#·wpf·halcon·机器视觉·visionmaster
hhzz6 小时前
【OpenCV 入门到精通 10】视频分析与光流跟踪:背景减除与运动检测
人工智能·python·opencv·性能优化
辰辉创聚13 小时前
重组蛋白聚集的形成机制及其对蛋白活性的影响
opencv·时序数据库·visual studio·重组蛋白·蛋白聚集·蛋白活性·蛋白聚集体
hhzz13 小时前
【OpenCV 入门到精通 11】机器学习应用:KNN、SVM 与 K-Means 实战
人工智能·python·深度学习·opencv
qq74223498417 小时前
OpenCV 之外的另一半工具箱:Supervision 视觉工程实战
人工智能·opencv·计算机视觉
jzshmyt1 天前
我用 Python 从零“生成“了一个宇宙,然后让它观察自己(v14)
人工智能·pytorch·python·numpy·matplotlib·空间计算·scipy
hhzz3 天前
OpenCV 入门到精通 09】特征检测与匹配:从 Harris 到 ORB 图像配准
人工智能·opencv·计算机视觉·开源·交互
Tp_jh4 天前
AMD 395本地部署Qwen3.8-Flash-Next实测,端侧AGI时代也要来了
图像处理·人工智能·opencv·语言模型·自然语言处理·千问
yyk333244 天前
计算机视觉OpenCV中的FisherFace人脸识别
人工智能·opencv·计算机视觉
棣廷5 天前
初识OpenCV——Dlib人脸检测、关键点定位与表情识别
opencv·目标检测·机器学习