opencv和pillow对图片的读写耗时对比

本文对比了Pillow和OpenCV在生成、保存和读取图片时的效率。实验结果显示,Pillow在保存图片时速度更快,而读取图片时两者耗时相近,但在将图片转换为numpy数组时,Pillow更耗时。因此,在大量图片处理中,Pillow可能是更好的选择。
摘要由CSDN通过智能技术生成

坚持写博客💪,分享自己的在学习、工作中的所得

  1. 给自己做备忘
  2. 对知识点记录、总结,加深理解
  3. 给有需要的人一些帮助,少踩一个坑,多走几步路

尽量以合适的方式排版,图文兼有
如果写的有误,或者有不理解的,均可在评论区留言
如果内容对你有帮助,欢迎点赞 👍 收藏 ⭐留言 📝。
虽然平台并不会有任何奖励,但是我会很开心,可以让我保持写博客的热情🙏🙏🙏



🧁生成数组

不同的包对于读写图片有不同的优化方式,导致他们的读写时间有差异,这个差异一般情况下可能无所谓,但是在大量图片数据的读写时,却可以节约大量的时间。

生成二维数组:

import cv2
import numpy as np
from PIL import Image

im = Image.new("RGB", (2048, 2048))
im = np.array(im)
print(im.shape)
# (2048, 2048, 3)

🧁函数实现

# image shape (2048, 2048, 3)
def save_pillow(img, path):
    im = Image.fromarray(img)
    im.save(path)

def save_cv2(img, path):
    cv2.imwrite(path, img)
    
def read_img_pillow(path):
    with open(path, "rb") as f:
        img = Image.open(f)
        img.convert("RGB")
        return np.array(img)

def read_img_cv2(path):
    img = cv2.imread(path)
    img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
    return img

🧁保存图片

pillow:

%%timeit 
save_pillow(img=im, path='pil.jpg')
# 18.8 ms

opencv:

%%timeit 
save_cv2(img=im, path='cv.jpg')
# 41.2 ms

可见使用opencv保存图片的耗时比pillow的两倍还高

🧁读取图片

pillow:

%%timeit 
read_img_pillow(path='pil.jpg')
# 42.6 ms

opencv:

%%timeit 
read_img_cv2(path='cv.jpg')
# 38 ms

读取图片时,opencv与pillow的耗时差不多,opencv稍快一点,但是其中一般耗时是np.array(img)操作:

def read_img_pillow2(path):
    with open(path, "rb") as f:
        img = Image.open(f)
        return img.convert("RGB")
%%timeit 
read_img_pillow2(path='pil.jpg')
# 19.7 ms

返回的是PIL.Image.Image类型

🧁结论

  • 保存图片时,pillow的耗时相比opencv有较大的优势
  • 读取图片时,pillowopencv耗时接近
  • 在大量图片数据读写时可以优先考虑pillow


如果内容对你有帮助,或者觉得写的不错
🏳️‍🌈欢迎点赞 👍 收藏 ⭐留言 📝
有问题,请在评论区留言

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ayiya_Oese

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值