在做深度学习采集数据集时,先录制视频,后期将视频帧提取出来作为数据集,是一种高效准备数据集的好方法,关于将视频帧中指定多少帧保存一帧到指定文件路径的代码见下:
# 将视频导出为若干帧图片
DATA_DIR = "Video/1.avi" # 视频存放路径
SAVE_DIR = "Images/photo" # 帧图片保存路径
GAP = 30 # 每隔多少帧导出一张图片
import cv2 # OpenCV库
import os
def getphoto(video_in, video_save):
number = 0
cap = cv2.VideoCapture(video_in) # 打开视频文件
n_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) # 视频的帧数
fps = cap.get(cv2.CAP_PROP_FPS) # 视频的帧率
dur = n_frames / fps # 视频的时间
num_frame = 0
judge = cap.isOpened()
while judge:
flag, frame = cap.read() # flag是读取状态,frame下一帧
if cv2.waitKey(0) == 27:
break
if flag:
num_frame += 1
if num_frame % GAP == 0:
print("正在保存第%d张照片" % number)
cv2.imwrite(video_save + '/' + str(number) + '.jpg', frame) # cv2.imwrite(‘路径’ + ‘名字’ + ‘后缀’, 要存的帧)
number += 1
else:
break
print("视频时长: %d 秒" % dur)
print("视频共有帧数: %d 保存帧数为: %d" % (n_frames, number))
print("每秒的帧数(FPS): %.1lf" % fps)
def main_1(path):
video_in = path
video_save = SAVE_DIR
getphoto(video_in, video_save)
if __name__ == '__main__':
paht = DATA_DIR # 视频路径
main_1(paht)
以上就是快速提取视频中间隔多少帧保存一帧到指定文件路径的方法,希望能帮助到你,谢谢!