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学习笔记整理3之输入输出、python eval函数
Dec 14 Python
轻量级的Web框架Flask 中模块化应用的实现
Sep 11 Python
linecache模块加载和缓存文件内容详解
Jan 11 Python
TensorFlow Session使用的两种方法小结
Jul 30 Python
python实现停车管理系统
Nov 30 Python
Python随机生成身份证号码及校验功能
Dec 04 Python
python根据txt文本批量创建文件夹
Dec 08 Python
python数据库编程 Mysql实现通讯录
Mar 27 Python
通过实例简单了解python yield使用方法
Aug 06 Python
python3.7.3版本和django2.2.3版本是否可以兼容
Sep 01 Python
Python就将所有的英文单词首字母变成大写
Feb 12 Python
PO模式在selenium自动化测试框架的优势
Mar 20 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上传图片、删除图片实现代码
2010/05/12 PHP
利用PHP实现智能文件类型检测的实现代码
2011/08/02 PHP
ThinkPHP之A方法实例讲解
2014/06/20 PHP
ThinkPHP查询语句与关联查询用法实例
2014/11/01 PHP
php实现随机显示图片方法汇总
2015/05/21 PHP
php将print_r处理后的数据还原为原始数组的解决方法
2016/11/02 PHP
CodeIgniter开发实现支付宝接口调用的方法示例
2016/11/14 PHP
lnmp安装多版本PHP共存的方法详解
2018/08/02 PHP
利用Dojo和JSON建立无限级AJAX动态加载的功能模块树
2007/03/24 Javascript
判断JavaScript对象是否可用的最正确方法分析
2008/10/03 Javascript
EasyUI的treegrid组件动态加载数据问题的解决办法
2011/12/11 Javascript
删除Javascript Object中间的key
2014/11/18 Javascript
AngularJS入门教程之Hello World!
2014/12/06 Javascript
JavaScript 实现完美兼容多浏览器的复制功能代码
2015/04/28 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
Angularjs根据json文件动态生成路由状态的实现方法
2017/04/17 Javascript
node.js平台下利用cookie实现记住密码登陆(Express+Ejs+Mysql)
2017/04/26 Javascript
JS中把函数作为另一函数的参数传递方法(总结)
2017/06/28 Javascript
详解Vue之父子组件传值
2019/04/01 Javascript
Python continue语句用法实例
2014/03/11 Python
Python异常学习笔记
2015/02/03 Python
Python中的特殊语法:filter、map、reduce、lambda介绍
2015/04/14 Python
jupyter notebook引用from pyecharts.charts import Bar运行报错
2020/04/23 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
Python如何操作office实现自动化及win32com.client的运用
2020/04/01 Python
python中如何设置代码自动提示
2020/07/15 Python
宏碁西班牙官网:Acer西班牙
2021/01/08 全球购物
大学生学业生涯规划
2014/01/05 职场文书
英语商务邀请函范文
2014/01/16 职场文书
空中乘务员岗位职责
2014/03/08 职场文书
司机工作自我鉴定
2014/09/19 职场文书
优秀团队申报材料
2014/12/26 职场文书
2016年寒假生活小结
2015/10/10 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS
TensorFlow的自动求导原理分析
2021/05/26 Python
MySQL中dd::columns表结构转table过程及应用详解
2022/09/23 MySQL