深度学习制作数据集时,从长视频中指定每隔多少帧提取一张图像到指定文件路径的方法

在做深度学习采集数据集时,先录制视频,后期将视频帧提取出来作为数据集,是一种高效准备数据集的好方法,关于将视频帧中指定多少帧保存一帧到指定文件路径的代码见下:

# 将视频导出为若干帧图片
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)

以上就是快速提取视频中间隔多少帧保存一帧到指定文件路径的方法,希望能帮助到你,谢谢!

猜你喜欢

转载自blog.csdn.net/qq_40280673/article/details/125957883
今日推荐