将多个视频文件抽取成帧文件

        将自己的视频抽取成帧只需要替换下面代码主函数的文件路径即可实现。

import cv2  
import os  
  
def video_to_frames(video_paths, output_path, frame_interval=1):  
    """  
    将多个视频文件的帧按照指定的间隔抽取到输出文件夹中。  
  
    参数:  
    video_paths (list of str): 视频文件路径的列表。  
    output_path (str): 保存帧图像的文件夹路径。  
    frame_interval (int): 抽取帧的间隔。  
    """  
    # 确保输出目录存在  
    if not os.path.exists(output_path):  
        os.makedirs(output_path)  
      
    # 遍历每个视频文件  
    for video_path in video_paths:  
        # 打开视频文件  
        video_capture = cv2.VideoCapture(video_path)  
          
        # 获取视频文件名(不包括扩展名),用于生成帧文件名  
        video_filename = os.path.splitext(os.path.basename(video_path))[0]  
          
        # 初始化帧计数器和保存帧计数器  
        frame_count = 0  
        save_frame_count = 0  
          
        # 读取视频帧直到结束  
        success = True  
        while success:  
            # 读取下一帧  
            success, frame = video_capture.read()  
              
            # 如果成功读取帧  
            if success:  
                # 检查是否应该保存当前帧  
                if frame_count % frame_interval == 0:  
                    # 构造唯一的帧文件名  
                    frame_filename = os.path.join(output_path, f"{video_filename}_frame_{save_frame_count:06d}.png")  
                      
                    # 保存帧到文件  
                    cv2.imwrite(frame_filename, frame)  
                      
                    # 递增保存帧计数器  
                    save_frame_count += 1  
                  
                # 递增帧计数器  
                frame_count += 1  
          
        # 释放视频捕获对象  
        video_capture.release()  
  
if __name__ == "__main__":  
    # 替换成你的视频文件路径列表  
    video_paths = [ "video1.mp4", 
                    "video2.mp4", 
                    "video3.mp4"
                   ]  
    # 替换成保存帧图像的文件夹路径  
    output_path = "output_frames"  
    # 设置抽取帧的间隔,5代表每隔5帧保存一张图片  
    frame_interval = 5  
      
    # 调用函数将多个视频的帧按照指定间隔抽取到同一个文件夹中  
    video_to_frames(video_paths, output_path, frame_interval)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值