最新,python,opencv读入和输出jpg、bmp、png、pny格式文件速度测试分析

1)直接上代码

import numpy as np,cv2,time,os,pdb

inp="dataset/1.jpg"
t1=time.time()
img1 = cv2.imread(inp, flags=cv2.IMREAD_COLOR)
t2=time.time()
cv2.imwrite("out1/1.jpg",img1)
t3=time.time()
ss=os.path.getsize(inp)/1024/1024
print('jpg read & save time=',t2-t1,t3-t2,'size(M)=',ss)

cv2.imwrite("dataset/1.bmp",img1)
cv2.imwrite("dataset/1.png",img1)
np.save("dataset/1.npy",img1)


inp="dataset/1.bmp"
t1=time.time()
img2 = cv2.imread(inp, flags=cv2.IMREAD_COLOR)
t2=time.time()
cv2.imwrite("out1/1.bmp",img1)
t3=time.time()
ss=os.path.getsize(inp)/1024/1024
print('bmp read & save time=',t2-t1,t3-t2,'size(M)=',ss)

inp="dataset/1.png"
t1=time.time()
img3 = cv2.imread(inp, flags=cv2.IMREAD_COLOR)
t2=time.time()
cv2.imwrite("out1/1.png",img1)
t3=time.time()
ss=os.path.getsize(inp)/1024/1024
print('png read & save time=',t2-t1,t3-t2,'size(M)=',ss)


inp="dataset/1.npy"
t1=time.time()
img4 = np.load(inp)
t2=time.time()
np.save("out1/1.npy",img1)
t3=time.time()
ss=os.path.getsize(inp)/1024/1024
print('npy read & save time=',t2-t1,t3-t2,'size(M)=',ss)

# pdb.set_trace()
# 正确性验证,没有问题,只是很慢
# for i in range(4000):
#     for j in range(3000):
#         for k in range(3):
#             if abs(img1[i,j,k]-img4[i,j,k])>0:
#                 print(i,j,k,img1[i,j,k]-img4[i,j,k])

内容就不解释了。

1)测试平台

华为的的Matebook,这个本子烂得很。conda里面执行。 

2)

测试结果

jpg read & save time= 0.3670051097869873 0.5111029148101807 size(M)= 5.2205610275268555
bmp read & save time= 0.061330318450927734 0.024112701416015625 size(M)= 34.332326889038086
png read & save time= 0.4295041561126709 0.9660918712615967 size(M)= 15.812897682189941
npy read & save time= 0.020075082778930664 0.05786633491516113 size(M)= 34.3323974609375

3)结果分析及结论

可见读取数据,npy是更好的选择,保存数据bmp文件速度更快,但是二者都是数据量大。

jpg大小为5.22M,而npy和bmp的大小为34M,而Png则是双大双慢。这个可能是底层库的原因。所硬盘受限的情况下,以从大小来说,jpg是比较好的选择。硬盘足够,从速度来看npy和bmp都不错。但是再个从兼容性和可视化而言,bmp至少Windows电脑还认识,npy可能就不一定了。可以做个转换或者部分转换,也是个选择。

猜你喜欢

转载自blog.csdn.net/anlongstar/article/details/130755884