1. 逐帧读取
import os
import time
import cv2 as cv
def read_frame(video_dir, imagesfile_dir):
cap = cv.VideoCapture(video_dir)
# 总帧数
frames_num = cap.get(7)
print("video1.frames_num: {}".format(frames_num))
state_time = time.time()
# 逐帧
j = 0
while(1):
# read() 返回一个布尔值和一个视频帧。若帧读取成功,则 rval 为 True。
rval, frame = cap.read()
if rval is False:
break
image = os.path.join(imagesfile_dir, str(j) + ".jpg")
print(image)
cv.imwrite(image, frame)
j = j + 1
cap.release()
print('takes time {:.3f} seconds'.format(time.time() - state_time))
if __name__ == "__main__":
# 输入 video 路径
video1_dir = '../video/1.mp4'
# 输出 image 路径
imagesfile_dir = '../frame_video_1/'
read_frame(video1_dir, imagesfile_dir)
参考:
未完待续…