使用Python+OpenCV将多级嵌套文件夹下的视频文件抽帧为JPG图片

[复制链接]
发表于 2025-9-19 23:34:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×

一、使用Python+OpenCV将多级嵌套文件夹下的视频文件抽帧为JPG图片
  1. import os
  2. import cv2
  3. import time
  4. # 存放视频文件的多层嵌套文件夹路径
  5. videoPath = 'D:\\videos\\'
  6. # 保存抽帧的图片的文件夹路径
  7. savePath = 'D:\\images\\'
  8. if not os.path.exists(savePath):
  9.     os.mkdir(savePath)
  10. video_num = 0
  11. for root, dirs, files in os.walk(videoPath):
  12.     # 提取多级嵌套文件夹路径下的文件列表
  13.     for video in files:
  14.         print(video)
  15.         if(video.endswith(".avi")):
  16.             c = 1
  17.             videofile = os.path.join(root, video)
  18.             vc = cv2.VideoCapture(videofile) #读入视频文件
  19.             if vc.isOpened(): #判断是否正常打开
  20.                 video_num = video_num + 1
  21.                 rval , frame = vc.read()
  22.                 #print("正常打开:",video)
  23.                 if(video_num%100 == 0):
  24.                     print(video_num)
  25.             else:
  26.                 rval = False
  27.                 print("打开失败:",video)
  28.                 continue
  29.    
  30.             timeF = 25  #视频帧计数间隔频率
  31.             try:
  32.                 while rval:   #循环读取视频帧
  33.                     rval, frame = vc.read()
  34.                     if(c%timeF == 0): #每隔timeF帧进行存储操作
  35.                         cv2.imwrite(os.path.join(savePath, video[:-4] + '_' + str(time.time_ns()) + '.jpg'),frame) #存储为图像
  36.                     c = c + 1
  37.                     cv2.waitKey(1)
  38.             except:
  39.                 #print("error")
  40.                 continue
  41.             vc.release()
复制代码
此中:timeF变量是界说视频抽帧隔断频率,可修改。
videoPath修改为本身的视频地点目次,savePath修改为本身的图片生存的目次。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表