python-对一个目录下的多个视频进行抽帧

# --*-- coding: utf-8 --*--
import os
import sys
import cv2

gef getFrame(srcRoot,saveRoot):
    fileList = os.listdir(srcRoot)
    for i in range(len(fileList))
        tmpName = 0
        frameFrequency = 5  # 每5帧抽1帧
        if not fileList[i].endswith('.mkv'):
            continue
        filePath = srcRoot + '\\'+ fileList[i] # .\DK\0-1.mkv
        print(filePath)
        if not os.path.exists(saveRoot):
            os.makedirs(saveRoot)
        single_path = os.path.join(saveRoot, fileList[i].split('.')[0])
        if not os.path.exists(single_path):
            os.makedirs(single_path)
        videoFile = cv2.VideoCapture(filePath)  # 打开视频
        while True:
            tmpName += 1
            res, image = videoFile.read()  # 按帧读取视频
            if not res:
                print('not res , not image')
                break
            if tmpName % frameFrequency == 0:
                save_path = os.path.join(single_path, str(tmpName)+'.jpg')
                cv2.imwrite(save_path, image)
                print(save_path, 'save done!')
        print(i, filePath + '图片提取结束')
        videoFile.release()

videoPath = sys.argv[1] # .\DK
saveRoot = sys.argv[2]  # .\DK_Sampling_5Frame
getFrame(videoPath,saveRoot)
#useage: python GetFrame.py videoPath saveRoot

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
你可以使用Python的OpenCV库来批量读取多个视频。下面是一个示例代码,可以读取视频并将每一帧保存为图片文件: ```python import cv2 import os # 定义要读取的视频文件夹路径 video_folder = 'path/to/your/folder' # 定义要保存的图片目录 output_folder = 'path/to/output/folder' # 获取视频文件夹下所有视频文件名 video_files = [f for f in os.listdir(video_folder) if f.endswith('.mp4')] # 遍历所有视频文件并逐一读取 for video_file in video_files: # 打开视频文件 cap = cv2.VideoCapture(os.path.join(video_folder, video_file)) # 定义帧计数器 frame_count = 0 # 循环读取视频帧 while True: # 读取视频帧 ret, frame = cap.read() # 如果视频结束,则退出循环 if not ret: break # 保存当前帧为图片文件 output_file = os.path.join(output_folder, f"{video_file[:-4]}_{frame_count:04d}.jpg") cv2.imwrite(output_file, frame) # 更新帧计数器 frame_count += 1 # 释放视频文件 cap.release() ``` 在上面的示例代码中,首先定义了要读取的视频文件夹路径和要保存的图片目录。然后使用`os.listdir()`函数获取该文件夹下所有以`.mp4`结尾的视频文件名。接着,使用`cv2.VideoCapture()`函数打开每个视频文件,并循环读取视频帧,直到视频结束。在每个视频帧读取完成后,将当前帧保存为一张图片文件,并使用计数器更新图片文件名。最后,记得使用`cap.release()`函数释放视频文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值