python几种读取及显示图片的方式,及各种方式的读取时间
发布时间
阅读量:
阅读量
python几种读取及显示图片的方式,及各种方式的读取、显示、保存时间
- 摘要
- 测试代码
- 结果:
摘要
主流的读取图片并显示的Python图像库如下:
- opencv
- PIL(pillow)
- matplotlib.image
- skimage
上述四种库的读取和显示方式如下述代码所述。下述代码中测试了不同库对同一张图片的读取以及显示时间。注意opencv读取图片格式为BGR,因此需要进行颜色转换。Pillow库读取图片形式不是numpy.array形式,因此需要先进行转换。上述两个操作均算成读取时间。
测试代码
import os
import cv2
from os.path import join as pjoin
import matplotlib.pyplot as plt
import imageio
from PIL import Image
import time
import skimage.io as io
import numpy as np
# 示例图片
imgPath = r'D:\Data\ISIC\ISIC2018_Task1-2_Training_Input\ISIC_0000000.jpg'
savePath_plt = r'D:\Data\test_plt.png'
savePath_pil = r'D:\Data\test_pil.png'
savePath_sk = r'D:\Data\test_sk.png'
savePath_cv = r'D:\Data\test_cv.png'
# # opencv 读取及显示时间
time_cv_load_start = time.time()
img_cv = cv2.cvtColor(cv2.imread(imgPath), cv2.COLOR_BGR2RGB)
time_cv_load_end = time.time()
time_cv_show_start = time.time()
cv2.imshow('cv2', img_cv)
time_cv_show_end = time.time()
cv2.waitKey(4)
time_cv_save_start = time.time()
cv2.imwrite(savePath_cv, cv2.cvtColor(img_cv, cv2.COLOR_RGB2BGR))
time_cv_save_end = time.time()
plt.pause(1)
# matplotlib 读取及显示时间
plt.figure(0)
time_plt_load_start = time.time()
img_plt = plt.imread(imgPath)
time_plt_load_end = time.time()
time_plt_show_start = time.time()
plt.imshow(img_plt)
time_plt_show_end = time.time()
plt.pause(1)
time_plt_save_start = time.time()
plt.imsave(savePath_plt, img_plt)
time_plt_save_end = time.time()
plt.pause(1)
# pillow 读取及显示时间
time_pil_load_start = time.time()
img_pil = Image.open(imgPath)
img_pil_np = np.array(img_pil)
time_pil_load_end = time.time()
time_pil_show_start = time.time()
img_pil = Image.fromarray(img_pil_np)
img_pil.save(savePath_pil)
time_pil_show_end = time.time()
time_pil_save_start = time.time()
img_pil.show()
time_pil_save_end = time.time()
# skimage 读取及显示
plt.figure(1)
time_sk_load_start = time.time()
img_sk = io.imread(imgPath)
time_sk_load_end = time.time()
time_sk_show_start = time.time()
io.imshow(img_sk)
time_sk_show_end = time.time()
time_sk_save_start = time.time()
io.imsave(savePath_sk, img_sk)
time_sk_save_end = time.time()
plt.pause(1)
print('读取时间, cv:{:.4f}s, plt:{:.4f}s, pil:{:.4f}s, sk:{:.4f}s'.format(time_cv_load_end-time_cv_load_start,
time_plt_load_end-time_plt_load_start,
time_pil_load_end-time_pil_load_start,
time_sk_load_end-time_sk_load_start))
print('显示时间, cv:{:.4f}s, plt:{:.4f}s, pil:{:.4f}s, sk:{:.4f}s'.format(time_cv_show_end-time_cv_show_start,
time_plt_show_end-time_plt_show_start,
time_pil_show_end-time_pil_show_start,
time_sk_show_end-time_sk_show_start))
print('存储时间, cv:{:.4f}s, plt:{:.4f}s, pil:{:.4f}s, sk:{:.4f}s'.format(time_cv_save_end-time_cv_save_start,
time_plt_save_end-time_plt_save_start,
time_pil_save_end-time_pil_save_start,
time_sk_save_end-time_sk_save_start))
python

结果:
windows 下的时间
读取时间, cv:0.0130s, plt:0.0149s, pil:0.0060s, sk:0.0050s
显示时间, cv:0.0847s, plt:0.0170s, pil:0.1935s, sk:0.0538s
存储时间, cv:0.0269s, plt:0.2174s, pil:1.7087s, sk:1.1832s
python
linux 下时间
读取时间, cv:0.1349s, plt:0.1500s, pil:0.1695s, sk:0.1607s
显示时间, cv:0.0000s, plt:0.0840s, pil:2.7047s, sk:0.3634s
存储时间, cv:0.3056s, plt:3.4132s, pil:0.0009s, sk:7.1833s
python
opencv 在linux远程服务器上显示需要配置,所以没有计算opencv在linux上的显示时间。另外opencv不能读取路径有中文的图片。总的来说windows和linux下需要使用的保存库和读取库不太相同
全部评论 (0)
还没有任何评论哟~
