import cv2 import time import matplotlib.pyplot as plt import imageio import skimage import numpy as np
二、ImageIO
代码如下(示例):
position =[1,5,10,15,20,25,30]# 所要抽取帧的索引 imageio_start = time.time()# imgeio方法的时间计算 vid = imageio.get_reader("test.mp4",'ffmpeg') length =len(position) frames2 =[] for i, img inenumerate(vid):if i in position:# 抽取指定帧image2 = skimage.img_as_float(img).astype(np.float32)# 转换为numpy数组frames2.append(image2)# plt.figure(0)# plt.imshow(image2)# plt.show()iflen(frames2)== length:break print('Time of imageio: ', time.time()-imageio_start)
三、CV2
代码如下(示例):
cv2_start = time.time()# 计算cv2花费的时间 capture = cv2.VideoCapture("963861351.mp4") frames =[] for i in position:capture.set(propId=cv2.CAP_PROP_POS_FRAMES, value=i)# 跳到指定帧hasframe, image1 = capture.read()frames.append(image1)# image1就是numpy数组# image1 = image1[:, :, :: -1] # 为了与imageio方法显示一致# plt.figure(0)# plt.imshow(image1)# plt.show() print('Time of cv2: ', time.time()-cv2_start)
四、控制台结果
Time of imageio:0.5045185089111328 Time of cv2:0.11601471900939941