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中的生成器和yield详细介绍
Jan 09 Python
Python中关于Sequence切片的下标问题详解
Jun 15 Python
python 检查是否为中文字符串的方法
Dec 28 Python
python定时复制远程文件夹中所有文件
Apr 30 Python
使用Python opencv实现视频与图片的相互转换
Jul 08 Python
基于Python+Appium实现京东双十一自动领金币功能
Oct 31 Python
pytorch 归一化与反归一化实例
Dec 31 Python
python单例设计模式实现解析
Jan 07 Python
TensorBoard 计算图的查看方式
Feb 15 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
Python 用__new__方法实现单例的操作
Dec 11 Python
python SOCKET编程基础入门
Feb 27 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对MongoDB[NoSQL]数据库的操作
2013/03/01 PHP
php GUID生成函数和类
2014/03/10 PHP
必须收藏的23个php实用代码片段
2016/02/02 PHP
Laravel学习教程之IOC容器的介绍与用例
2017/08/15 PHP
JQuery的Validation插件中Remote验证的中文问题
2010/07/26 Javascript
js模拟点击事件实现代码
2012/11/06 Javascript
jquery数组过滤筛选方法grep()简介
2014/06/06 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
js调出上下文菜单的实例
2015/12/17 Javascript
每日十条JavaScript经验技巧(二)
2016/06/23 Javascript
浅谈js中test()函数在正则中的使用
2016/08/19 Javascript
Move.js入门
2017/02/08 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
vue组件(全局,局部,动态加载组件)
2018/09/02 Javascript
对 Vue-Router 进行单元测试的方法
2018/11/05 Javascript
微信小程序转发事件实现解析
2019/10/22 Javascript
在Vue mounted方法中使用data变量详解
2019/11/05 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
Python爬取读者并制作成PDF
2015/03/10 Python
Python中使用asyncio 封装文件读写
2016/09/11 Python
pandas apply 函数 实现多进程的示例讲解
2018/04/20 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
mac PyCharm添加Python解释器及添加package路径的方法
2018/10/29 Python
python实现逐个读取txt字符并修改
2018/12/24 Python
python实现学生管理系统开发
2020/07/24 Python
amazeui页面校验功能的实现代码
2020/08/24 HTML / CSS
物流专业求职信
2014/06/30 职场文书
本科应届生求职信
2014/08/05 职场文书
群众路线个人对照检查材料2014
2014/09/26 职场文书
副校长个人对照检查材料思想汇报
2014/10/04 职场文书
焦点访谈观后感
2015/06/11 职场文书
小学见习报告
2015/06/23 职场文书
小学总务工作总结
2015/08/13 职场文书
团队执行力培训心得体会
2015/08/15 职场文书