python+openCV对视频进行截取的实现


Posted in Python onNovember 27, 2020

使用cv2对视频进行切割

import cv2


def clip_video(source_video, target_video, start_time, end_time):
  cap = cv2.VideoCapture(source_video)
  if not cap.isOpened():
    logger_warning('video is not opened')
  else:
    success, frame = cap.read()
    f_shape = frame.shape
    f_height = f_shape[0] # 原视频图片的高度
    f_width = f_shape[1]
    fps = cap.get(5) # 帧速率
    frame_number = cap.get(7) # 视频文件的帧数
    duration = frame_number / fps # 视频总帧数/帧速率 是时间/秒【总共有多少秒的视频时间】
    if start_time > duration or end_time > duration:
      return
    start_time = fps * float(start_time)
    end_time = fps * float(end_time)
    # AVI格式编码输出 XVID
    four_cc = cv2.VideoWriter_fourcc(*'H264')
    video_writer = cv2.VideoWriter(target_video, four_cc, fps, (int(f_width), int(f_height)))
    num = 0
    while True:
      success, frame = cap.read()
      if int(start_time) <= int(num) <= int(end_time):
        if success:
          video_writer.write(frame)
        else:
          break
      num += 1
      if num > frame_number:
        break
    cap.release()

VideoWriter_fourcc编码格式:

fourcc意为四字符代码(Four-Character Codes),顾名思义,该编码由四个字符组成,下面是VideoWriter_fourcc对象一些常用的参数,注意:字符顺序不能弄混
cv2.VideoWriter_fourcc('I', '4', '2', '0'),该参数是YUV编码类型,文件名后缀为.avi
cv2.VideoWriter_fourcc('P', 'I', 'M', 'I'),该参数是MPEG-1编码类型,文件名后缀为.avi
cv2.VideoWriter_fourcc('X', 'V', 'I', 'D'),该参数是MPEG-4编码类型,文件名后缀为.avi
cv2.VideoWriter_fourcc('T', 'H', 'E', 'O'),该参数是Ogg Vorbis,文件名后缀为.ogv
cv2.VideoWriter_fourcc('F', 'L', 'V', '1'),该参数是Flash视频,文件名后缀为.flv

到此这篇关于python+openCV对视频进行截取的实现的文章就介绍到这了,更多相关openCV视频截取内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中利用sqrt()方法进行平方根计算的教程
May 15 Python
解决Django模板无法使用perms变量问题的方法
Sep 10 Python
matplotlib简介,安装和简单实例代码
Dec 26 Python
Python 3.6 读取并操作文件内容的实例
Apr 23 Python
pytorch: tensor类型的构建与相互转换实例
Jul 26 Python
Scrapy框架爬取西刺代理网免费高匿代理的实现代码
Feb 22 Python
如何利用Python模拟GitHub登录详解
Jul 15 Python
Python OpenCV视频截取并保存实现代码
Nov 30 Python
Python中的__init__作用是什么
Jun 09 Python
使用Python将语音转换为文本的方法
Aug 10 Python
Python实现列表拼接和去重的三种方式
Jul 02 Python
Python装饰器的练习题
Nov 23 Python
Python环境配置实现pip加速过程解析
Nov 27 #Python
python实现学生信息管理系统(精简版)
Nov 27 #Python
基于Python采集爬取微信公众号历史数据
Nov 27 #Python
Django中日期时间型字段进行年月日时分秒分组统计
Nov 27 #Python
Python基于execjs运行js过程解析
Nov 27 #Python
celery在python爬虫中定时操作实例讲解
Nov 27 #Python
python输出国际象棋棋盘的实例分享
Nov 26 #Python
You might like
用php+mysql一个名片库程序
2006/10/09 PHP
php str_replace的替换漏洞
2008/03/15 PHP
Zend Framework中的简单工厂模式 图文
2012/07/10 PHP
PHP 反射(Reflection)使用实例
2015/05/12 PHP
php读取csc文件并输出
2015/05/21 PHP
Laravel框架用户登陆身份验证实现方法详解
2017/09/14 PHP
Firefox中beforeunload事件的实现缺陷浅析
2012/05/03 Javascript
随鼠标移动的时钟非常漂亮遗憾的是只支持IE
2014/08/12 Javascript
Angular发布1.5正式版,专注于向Angular 2的过渡
2016/02/18 Javascript
js调用屏幕宽度的简单方法
2016/11/14 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
bootstrap 下拉多选框进行多选传值问题代码分析
2017/02/14 Javascript
vue.js中Vue-router 2.0基础实践教程
2017/05/08 Javascript
兼容浏览器的js事件绑定函数(详解)
2017/05/09 Javascript
Vue实现动态显示textarea剩余字数
2017/05/22 Javascript
jQuery选择器_动力节点Java学院整理
2017/07/05 jQuery
微信小程序中使用Promise进行异步流程处理的实例详解
2017/08/17 Javascript
ReactJs实现树形结构的数据显示的组件的示例
2017/08/18 Javascript
Bootstrap 模态框(Modal)带参数传值实例
2017/08/20 Javascript
关于axios不能使用Vue.use()浅析
2018/01/12 Javascript
详解react-native WebView 返回处理(非回调方法可解决)
2018/02/27 Javascript
微信小程序scroll-x失效的完美解决方法
2018/07/18 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
Vue axios设置访问基础路径方法
2018/09/19 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
在vs code 中如何创建一个自己的 Vue 模板代码
2020/11/10 Javascript
python tkinter组件摆放方式详解
2019/09/16 Python
python进度条显示之tqmd模块
2020/08/22 Python
容易被忽略的Python内置类型
2020/09/03 Python
在 Python 中使用 7zip 备份文件的操作
2020/12/11 Python
什么是smarty? Smarty的优点是什么?
2013/08/11 面试题
大二学期个人自我评价
2014/01/13 职场文书
篝火晚会策划方案
2014/05/16 职场文书
学习雷锋主题班会
2015/08/14 职场文书
python 制作一个gui界面的翻译工具
2021/05/14 Python
Python Flask搭建yolov3目标检测系统详解流程
2021/11/07 Python