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脚本实时处理log文件的方法
Nov 21 Python
django+js+ajax实现刷新页面的方法
May 22 Python
对python实现模板生成脚本的方法详解
Jan 30 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
python常用库之NumPy和sklearn入门
Jul 11 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
Python创建一个元素都为0的列表实例
Nov 28 Python
浅谈tensorflow之内存暴涨问题
Feb 05 Python
使用Python三角函数公式计算三角形的夹角案例
Apr 15 Python
java字符串格式化输出实例讲解
Jan 06 Python
python+selenium实现12306模拟登录的步骤
Jan 21 Python
python析构函数用法及注意事项
Jun 22 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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
第四节 构造函数和析构函数 [4]
2006/10/09 PHP
PHP 图片上传实现代码 带详细注释
2010/04/29 PHP
md5 16位二进制与32位字符串相互转换示例
2013/12/30 PHP
PHP计算指定日期所在周的开始和结束日期的方法
2015/03/24 PHP
使用PHP实现下载CSS文件中的图片
2015/12/06 PHP
jQuery Ajax之load()方法
2009/10/12 Javascript
改写一个简单的菜单 弹性大小
2010/12/02 Javascript
jQuery fadeTo方法调整图片的透明度使用介绍
2013/05/06 Javascript
完美解决jQuery符号$与其他javascript 库、框架冲突的问题
2016/08/09 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
利用js的闭包原理做对象封装及调用方法
2017/04/07 Javascript
js如何编写简单的ajax方法库
2017/08/02 Javascript
for循环 + setTimeout 结合一些示例(前端面试题)
2017/08/30 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
Vue 使用Props属性实现父子组件的动态传值详解
2019/11/13 Javascript
JS精确判断数据类型代码实例
2019/12/18 Javascript
vue2.x 对象劫持的原理实现
2020/04/19 Javascript
[03:02]安得倚天剑,跨海斩长鲸——中国军团出征DOTA2国际邀请赛
2018/08/14 DOTA
python 字符串split的用法分享
2013/03/23 Python
Python中__init__和__new__的区别详解
2014/07/09 Python
Python实现单词拼写检查
2015/04/25 Python
Python爬取三国演义的实现方法
2016/09/12 Python
Python编写通讯录通过数据库存储实现模糊查询功能
2019/07/18 Python
解决django后台管理界面添加中文内容乱码问题
2019/11/15 Python
使用python3 实现插入数据到mysql
2020/03/02 Python
PyQt5 控件字体样式等设置的实现
2020/05/13 Python
零基础学Python之前需要学c语言吗
2020/07/21 Python
Python虚拟环境virtualenv创建及使用过程图解
2020/12/08 Python
台湾网购生鲜第一品牌:i3Fresh爱上新鲜
2017/10/26 全球购物
英国领先的在线鱼贩:The Fish Society
2020/08/12 全球购物
自我评价范文点评
2013/12/04 职场文书
网络书店创业计划书
2014/02/07 职场文书
个人租房协议书样本
2014/10/01 职场文书
vue首次渲染全过程
2021/04/21 Vue.js