当前位置: 首页 > news >正文

python目标检测将视频按照帧率切除成图片

python目标检测将视频按照帧率切除成图片

python目标检测将视频按照帧率切除成图片,并且允许放入多个多个视频

完整代码如下:

import os
import cv2

class VideoSplit:
    """
    将视频分帧为图片
    source_path: 视频文件存储地址
    result_path: 图片结果文件保存地址
    frame: 帧率,每frame帧保存一张图片
    """

    def __init__(self, source_path, result_path, frame=10):
        self.source_path = source_path
        if not os.path.exists(self.source_path):
            raise Exception("源文件路径不存在!")

        self.result_path = result_path
        self.frame = frame
        if not os.path.exists(self.result_path):
            os.makedirs(self.result_path)
            print("创建文件夹{},".format(self.result_path))

    def split_video(self):
        video_list = os.listdir(self.source_path)
        for i, name in enumerate(video_list):
            video_list[i] = os.path.join(self.source_path, name)
            basename = name.split('.')[0]
            video_result_path = os.path.join(self.result_path, basename)
            if not os.path.exists(video_result_path):
                os.makedirs(video_result_path)
                print("创建子文件夹{},".format(basename))
            cap = cv2.VideoCapture(video_list[i])
            print("视频{}开始分帧...".format(name))

            sum = 0
            i = 0
            while True:
                ret, frame = cap.read()
                if not ret:
                    break
                sum += 1
                # 保存图片
                if sum == self.frame:
                    sum = 0
                    i += 1
                    imgname = basename + '_' + str(i) + '.jpg'
                    imgPath = os.path.join(video_result_path, imgname)
                    cv2.imwrite(imgPath, frame)
                    print(imgname)
            print("{}视频文件提取完成".format(basename))
        print("完成")

if __name__ == "__main__":
    source_path = r'C:\Users\video'
    result_path = r'C:\Users\result'
    tst = VideoSplit(source_path, result_path)
    tst.split_video()

注意:尽量手动创建两个文件夹video、result

相关文章:

  • 数据的使用、表关系的创建、Django框架的请求生命周期流程图
  • 智能井盖传感器功能,万宾科技产品介绍
  • [POI2006] OKR-Periods of Words——最大周期长度(扩展最小周期长度)
  • OpenCV中更稳更快的边缘检测方法,快速查找线、圆、椭圆--EdgeDrawing-C++代码
  • 推导式
  • Linux---(五)三大工具yum、vim、gcc/g++
  • 有符号数是如何判断正负符号位的?
  • 基于element-plus定义表格行内编辑配置化
  • fpga时序相关概念与理解
  • Pydantic:数据类型确认和解析神器
  • 3.0.3版vsftpd所支持的FTP命令
  • 【Docker】iptables基本原理
  • 基于51单片机的万年历-脉搏计仿真及源程序
  • 【面经】ES中分片是什么?副本是什么?
  • 《DevChat:AI编程助手引领开发新潮》
  • 创建一个事务级临时表或者会话级临时表继续测试,在什么情况下临时表里的数据会消失
  • Android---App 崩溃
  • 一个用python PyQT写的背单词小程序
  • 快速部署OpenStack全新UI管理Skyline Dashboard
  • 引用(类名后加符号)和指针的区别
  • 证监会披露两起操纵市场处罚结果,今年来涉操纵股票罚没金额超7.5亿元
  • 特朗普公开“怼”库克:苹果不应在印度生产手机
  • 新版城市规划体检评估解读:把城市安全韧性摆在更加突出位置
  • 中国军网:带你揭开3所新调整组建军队院校的神秘面纱
  • 小米汽车机盖门陷谈判僵局,车主代表称小米表示“退订会造成崩塌”
  • 新任美国驻华大使庞德伟抵京履职,外交部回应