Python实现视频逐帧提取并保存至指定目录

Theo
Theo
发布时间:2026-10-13 | 4人浏览过
原创

本文介绍如何使用Python和OpenCV库将视频文件逐帧读取并保存至自定义目录。通过解析命令行参数指定源视频路径和目标图像存储路径,程序自动根据视频名称创建对应文件夹,并循环读取每一帧图像进行保存,实现视频到图片序列的批量转换。

Python视频逐帧提取与保存实现

要实现将视频按帧读取并保存,首先需要获取视频的存储路径。接着,依据视频文件的名称创建对应的独立文件夹,以便分类存储提取出的图像。最后,程序将逐帧读取视频内容,并将每一帧图像数据写入到之前创建的指定目录中。


import cv2
import argparse
import sys
import os
parser = argparse.ArgumentParser(description='tranfer the vedio to img.')
parser.add_argument('-m', '--mode', choices=['folder', 'url'], default='folder')
parser.add_argument('-p', '--path', help='Specify a path [e.g. testModel]', default='E:\DATA\pose_h3.6m\S5\Videos')
parser.add_argument('-pimg', '--imgpath', help='Specify a path [e.g. testModel]', default='F:\pythonprogram\multi_task\img\S5')
args = parser.parse_args(sys.argv[1:])
 
if args.mode == 'folder':
  #get video
  withPath = lambda f: '{}/{}'.format(args.path,f)
  video = dict((f,cv2.imread(withPath(f))) for f in os.listdir(args.path) if os.path.isfile(withPath(f)))
for key,val in video.items():
  fram_video = '{}/{}'.format(args.path,key)
  act_cam=key[:-4]
  vc=cv2.VideoCapture('{}\{}'.format(args.path,key))
  c = 1
  # camera
  # print('{}\{}\{}.jpg'.format(args.imgpath, act_cam,str(c)))
  path = '{}\{}'.format(args.imgpath, act_cam)
  isExists = os.path.exists(path)
  if not isExists:
    os.makedirs(path)
  if vc.isOpened():
    rval, frame = vc.read()
  else:
    rval = False
  while rval:
    rval, frame = vc.read()
    cv2.imwrite('{}\\{}\\{}.jpg'.format(args.imgpath, act_cam,str(c)),frame)
  #   cv2.imwrite('C:\\Users\\65183\\Desktop\\test\\fuck\\'+str(c)+'.jpg', frame)
    c = c + 1
    cv2.waitKey(1)
  vc.release()

上述内容展示了利用Python实现视频逐帧提取至自定义目录的完整方法,旨在为读者提供实用的参考方案。希望这一技巧能对相关开发工作有所帮助,同时也欢迎大家继续支持本站内容。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表