1. 问题描述
之前处理视频数据集都是抽帧后再读取图片的方法,最近想直接从视频中读,并且发现有时这样速度更快(pytorch的dataloader相同参数,UCF101加载一个epoch从7.4min降到了2.8min),但在使用opencv-python库处理视频的时候,用cv2.VideoCapture.get()得到的总帧数与实际按帧能读取得到的帧数不相同,这就导致最后一部分帧并不能读取成功。以UCF101中某个视频测试,示例如下
capture = cv2.VideoCapture('/home/data/ucf101/video/GolfSwing/v_GolfSwing_g22_c02.avi')
len_video = int(capture.get(cv2.CAP_PROP_FRAME_COUNT))
print('num of video frames :', len_video)
n = 0
lose = []
for i in range(len_video):
ret, frame = capture.read()
if ret:
n += 1
else:
lose.append(i)
print('index :{}, read: {}'.format(i, n))
print(lose)
------------------------- pr