使用Python自动给视频逐帧截图

2023-05-16

背景

数据集采集不单有图片格式,也有视频格式,有时我们需要根据采集来的视频生成图片,再进行标注。所以这里我们使用Python自动给视频逐帧截图。
注意:由于摄像机录制的视频大多是XMF格式,需要使用格式工厂等软件转成mp4格式。

代码

直接上代码,可以根据自己的需求修改,比如多个视频文件依次截图等。

import cv2
import argparse
import os


def parse_args():
    parser = argparse.ArgumentParser(description='Process pic')
    parser.add_argument('--input', help='video to process', dest='input', default=None, type=str)
    parser.add_argument('--output', help='pic to store', dest='output', default=None, type=str)
    parser.add_argument('--skip_frame', dest='skip_frame', help='skip number of video', default=3, type=int)
    args = parser.parse_args(['--input', r'D:\FFOutput\Clip_mp4\Clip0044.mp4', '--output', r'D:\FFOutput\Clip_capture44'])
    return args


def process_video(i_video, o_video, num):
    cap = cv2.VideoCapture(i_video)
    num_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT)
    print("this video has " + str(num_frame) + " frame.")
    # expand_name = '.jpg'
    if not cap.isOpened():
        print("Please check the path.")
    cnt = 0
    count = 0
    while 1:
        ret, frame = cap.read()
        cnt += 1
        if cnt % num == 0:
            count += 1
            filename = "44" + "%04d.jpg" % count
            # cv2.imwrite(os.path.join(o_video, str(count) + expand_name), frame)
            cv2.imwrite(os.path.join(o_video, filename), frame)
        if not ret:
            break


if __name__ == '__main__':
    args = parse_args()
    if not os.path.exists(args.output):
        os.makedirs(args.output)
    print('Called with args:')
    print(args)
    process_video(args.input, args.output, args.skip_frame)
    print("process is finished now")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Python自动给视频逐帧截图 的相关文章

随机推荐

  • 生产者-消费者问题-Java实现

    生产者 消费者问题在JAVA中实现的方法有多种 xff0c 我写的是用 wait notify 实现 xff1b wait notify 方法是基类 object 的两个方法 wait 方法 xff1a 当缓冲区已满 空时 xff0c 生产
  • 微服务远程访问找不到组件注入

    UnsatisfiedDependencyException Error creating bean with name orderController Unsatisfied dependency expressed through fi
  • Ubuntu系统用户登陆陷入登陆循环—权限、.xsession-errors、内存不足问题

    问题 xff1a ubuntu18输入密码正确 xff0c 但一直在登录界面循环进不去 参考 xff1a ubuntu18登录界面循环进不去 ubuntu18 xsession errors文件过大 一 解决方法 权限问题 问题 xff1a
  • JAVA继承

    知识点总结 JAVA继承 一 继承的概念 继承是java面向对象编程技术的一块基石 xff0c 因为它允许创建分等级层次的类 继承就是子类继承父类的特征和行为 xff0c 使得子类对象 xff08 实例 xff09 具有父类的实例域和方法
  • java面向对象

    知识点总结 面向对象 1 instanceof 用来判断引用类型 2 Java中定义 类 的一个固定格式写法 修饰符 class 类名 零到多个构造器 零到多个成员变量 零道多个方法 零到多个初始化块 修饰符 public private
  • 小白视角看ros_openvino_toolkit

    计算机科学领域的任何问题都可以通过增加一个间接的中间层来解决 Any problem in computer science can be solved by anther layer of indirection 1 背景 在AI落地应用
  • sql新增查改

    一 新增数据 1 插入所有字段 xff0c 必须按顺序依次插入 xff1b 如果插入的 数据个数 少于 字段个数 则会报错 INSERT INTO sys user 字段 字段 字段 values 1 rose 22 2 插入部分字段 xf
  • Session和Cookied区别

    知识点总结 xff1a 总结1 如何解决HTTP协议无状态问题 Http是无状态的协议 客户 每次读取web页面时 服务器都是打开新的连接 而且服务器也不会自动维护客服的上下文信息 那么要怎么才能在多次请求之间共享信息呢 比如现实网上商店中
  • 东方之星酒店管理项目技术总结

    文献种类 xff1a 项目研发技术文献 xff1b 开发工具与关键技术 xff1a IDEA 2021 1 SQLyog 64 bit JAVA 作者 xff1a 周秋梅 xff1b 年级 xff1a 1901 xff1b 撰写时间 xff
  • web的两种跳转方式

    知识点总结 xff1a 在进行web开发时 xff0c 跳转是最常见的 xff0c 今天在这里来学习下2种跳转 xff1a 第一种是request getRequestDispatcher forward request response
  • yaml和properties之间区别

    知识点总结 xff1a 一 yaml和properties 他俩是干啥的 xff1f yaml和properties都是用来写配置文件的 xff0c 可以向bean中注入咱们提前写好的数据 他俩有啥区别 xff1f yaml是springb
  • springBoot入门

    1 1 springBoot简介 Spring Boot是Spring家族的一个子项目 xff0c 其设计初衷是为了简化Spring配置 xff0c 从而可以轻松构建独立运 行的程序 xff0c 并极大提高开发效率 Spring Boot是
  • SpringBoot视图技术

    1 1 SpringBoot视图技术 Spring Boot是Spring家族的一个子项目 xff0c 其设计初衷是为了简化Spring配置 xff0c 从而可以轻松构建独立运 行的程序 xff0c 并极大提高开发效率 Spring Boo
  • 关于thymeleaf 报错org.attoparser.ParseException: Could not parse as expression

    关于thymeleaf 报错信息 org thymeleaf exceptions TemplateProcessingException Could not parse as expression 34 checkbox true fix
  • C++练习25:计算输入字符串中每个字母出现的次数

    C 43 43 练习25 xff1a 计算输入字符串中每个字母出现的次数 题目输出示例代码方法1 xff1a 方法2 xff1a 题目 计算输入字符串中每个字母出现的次数 xff0c 不区分大小写 输入格式 xff1a 输入长度不超过100
  • Python 拉取远程服务器资源到本地

    因为功能需要 需要从远端服务器拉取文件资源到本地 写了一个简单脚本 功能没有很复杂就不写相关解释了 span class token keyword import span paramiko span class token keyword
  • ros_openvino_toolkit环境搭建纪实

    文章目录 先决条件一 配置环境1 安装Open VINO 2020 3 194环境a 在Ubuntu系统上无sudo权限命令行安装OpenVINOb 验证安装成功c 安装MO 2 安装ROS环境a 换源b 添加ros latest list
  • python怎么限制输入0到100的范围,思路及方法

    python限制输入0到100的范围的思路 要用python设计一个程序 xff0c 不仅可以满足限制用户输入0到100的范围 xff0c 而不仅仅是提示 xff0c 而且当用户输入超出范围的值的时候 xff0c python程序会给出提示
  • linux上 防火墙查看,添加,关闭,开放端口等命令

    1 查看防火墙状态如下 xff1a 查看防火墙状态 systemctl status firewalld 开启防火墙 systemctl start firewalld 关闭防火墙 systemctl stop firewalld 开启防火
  • 使用Python自动给视频逐帧截图

    背景 数据集采集不单有图片格式 xff0c 也有视频格式 xff0c 有时我们需要根据采集来的视频生成图片 xff0c 再进行标注 所以这里我们使用Python自动给视频逐帧截图 注意 xff1a 由于摄像机录制的视频大多是XMF格式 xf