opencv实现每隔20帧保存一张图片

93 阅读1分钟

代码


import cv2



def save_frames(video_path, save_dir, frame_interval=20):
    # 打开视频文件
    video = cv2.VideoCapture(video_path)
    frame_count = 0

    while video.isOpened():
        # 读取视频帧
        ret, frame = video.read()

        if not ret:
            break

        frame_count += 1

        # 每隔frame_interval帧保存一张图片
        if frame_count % frame_interval == 0:
            save_path = f"{save_dir}/frame_{frame_count}.jpg"
            cv2.imwrite(save_path, frame)

        if ret == True:
            # 显示帧
            cv2.imshow('Video', frame)

            # 通过按下键盘上的“q”键或达到视频的最后一帧时退出循环
            if cv2.waitKey(25) & 0xFF == ord('q'):
                break
        else:
            break
    # 释放资源
    video.release()
    cv2.destroyAllWindows()


# 测试
video_path = '222.mp4'  # 视频文件路径
save_dir = 'frame'  # 保存帧的文件夹路径

save_frames(video_path, save_dir, frame_interval=20)

image.png

image.png