坚持写博客💪,分享自己的在学习、工作中的所得
- 给自己做备忘
- 对知识点记录、总结,加深理解
- 给有需要的人一些帮助,少踩一个坑,多走几步路
尽量以合适的方式排版,图文兼有
如果写的有误,或者有不理解的,均可在评论区留言
如果内容对你有帮助,欢迎点赞 👍 收藏 ⭐留言 📝。
虽然平台并不会有任何奖励,但是我会很开心,可以让我保持写博客的热情🙏🙏🙏
🧁生成数组
不同的包对于读写图片有不同的优化方式,导致他们的读写时间有差异,这个差异一般情况下可能无所谓,但是在大量图片数据的读写时,却可以节约大量的时间。
生成二维数组:
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有较大的优势
- 读取图片时,pillow与opencv耗时接近
- 在大量图片数据读写时可以优先考虑pillow
如果内容对你有帮助,或者觉得写的不错
🏳️🌈欢迎点赞 👍 收藏 ⭐留言 📝
有问题,请在评论区留言