python实现视频转图片


代码运行,需要装有opencv模块,装opencv模块前需要装numpy模块。

此代码运行只需更改最后两个参数即可。

此代码除删除文件夹内容的函数来源于网上,其余皆自己编写。
本代码只为方便使用,变量命名因此随意了。

import cv2
import os

def del_file(filepath):
    """
    删除某一目录下的所有文件或文件夹
    :param filepath: 路径
    :return:
    """
    del_list = os.listdir(filepath)
    for f in del_list:
        file_path = os.path.join(filepath, f)
        if os.path.isfile(file_path):
            os.remove(file_path)

def video_to_images(fps,path):
  cv = cv2.VideoCapture(path)
  if(not cv.isOpened()):
    print("\n打开视频失败!请检查视频路径是否正确\n")
    exit(0)
  if not os.path.exists("images/"):
    os.mkdir("images/") # 创建文件夹
  else:
    del_file('images/') # 清空文件夹
  order = 0   #序号
  if fps == 0:
    while True:
      rval, frame = cv.read()
      order = order + 1
      if rval:
        cv2.imwrite('./images/' + str(order) + '.jpg', frame) #图片保存位置以及命名方式
        cv2.waitKey(1)
      else:
        break
  else:
    h = 0
    while True:
      h=h+1
      rval, frame = cv.read()
      if h == fps:
        h = 0
        order = order + 1
        if rval:
          cv2.imwrite('./images/' + str(order) + '.jpg', frame) #图片保存位置以及命名方式
          cv2.waitKey(1)
        else:
          break
  cv.release()
  print('\nsave success!\n')

# 参数设置
fps = 0   # 隔多少帧取一张图  0表示全部取
path="tram_result.mp4" # 视频路径 比如 D:\\images\\tram_result.mp4 或者 D:/images/tram_result.mp4

if __name__ == '__main__':
  video_to_images(fps,path)
  # 会在代码的当前文件夹下 生成images文件夹 用于保存图片
  # 如果有images文件夹,会清空文件夹!

你可能感兴趣的:(opencv,python,python,音视频,opencv)