基于opencv-python库的批量视频转图片的方法

部分代码基于:用python把视频转换为图片_居然.org的博客-CSDN博客_python将视频转化为图片

文中将此方法进行了改进,可以批量将视频文件转换为图片,只需要将你的视频放到指定文件夹下。

首先需要安装库,没有pip的先装一下pip:pip 安装_贪心西瓜的博客-CSDN博客

pip install opencv-python

在Pycharm或其他你正在使用的编译器中建立目录结构如下(名称可自定义,仅供参考,如不想改动代码请按此命名结构建立):

  •  video2image
    • data
      • image
      • video
        • “存放你的视频”(如果是mp4格式那代码就不用修改)
    • video2img.py

 

主体代码video2img.py内容如下:

import cv2
import os
'''
定义保存图片的函数
image:要保存的图片
addr:图片的地址和名称信息
num图片名称的后缀,使用int类型来计数
'''
def save_image(image,addr,num):
    address = addr + str(num) + '.jpg'
    cv2.imwrite(address,image)

def setDir(filepath):
    '''
    如果文件夹不存在就创建,如果文件存在就清空!
    :param filepath:需要创建的文件夹路径
    :return:
    '''
    if not os.path.exists(filepath):
        os.mkdir(filepath)


def video2img(filename,timeF):
    #   读取视频文件
    vode = cv2.VideoCapture("data/video/"+filename)
    #   读帧
    success,frame = vode.read()
    #   初始化变量
    i = 0   # 帧计数
    j = 0   # 图片计数
    timeF = timeF #   每隔57帧(一秒)保存一张图片,这个要看自己的视频每秒是多少帧


    output_path = "data/image/"+filename  # 创建文件夹
    setDir(output_path)


    # 使用循环进行图片的保存
    while success:
        i = i + 1
        if (i % timeF == 0):
            j = i +1
            save_image(frame, 'data/image/'+filename+'/image_', j)
            print(filename+':save image:',j)
        success,frame = vode.read()

def listdir(path, list_name):
  for file in os.listdir(path):
    file_path = os.path.join(path, file)
    if os.path.isdir(file_path):
      listdir(file_path, list_name)
    elif os.path.splitext(file_path)[1]=='.mp4':
      list_name.append(file_path.split('\\')[1])

if __name__ == '__main__':
    timeF = 30  # 每隔多少帧(一秒)保存一张图片,这个要看自己的视频每秒是多少帧

    list_name = []
    path = "data/video"
    listdir(path,list_name)

    for filename in list_name:
        video2img(filename,timeF)
        print()

函数 listdir 中的‘.mp4’ 可以改成你的视频文件的后缀格式

需要改动的参数为 timeF,表示每隔多少帧保存一张图片。

视频的帧率,右键视频,点击属性,再选择详细信息选项卡,可以看到帧速率。

帧率(Frame rate)是以帧称为单位的位图图像连续出现在显示器上的频率(速率)

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值