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获取赶集网招聘信息前篇
Apr 18 Python
Python常见格式化字符串方法小结【百分号与format方法】
Sep 18 Python
python django事务transaction源码分析详解
Mar 17 Python
django启动uwsgi报错的解决方法
Apr 08 Python
python pandas中对Series数据进行轴向连接的实例
Jun 08 Python
widows下安装pycurl并利用pycurl请求https地址的方法
Oct 15 Python
使用python3调用wxpy模块监控linux日志并定时发送消息给群组或好友
Jun 05 Python
Mac安装python3的方法步骤
Aug 09 Python
python实现多进程通信实例分析
Sep 01 Python
python每5分钟从kafka中提取数据的例子
Dec 23 Python
Python3+selenium实现cookie免密登录的示例代码
Mar 18 Python
Pandas 数据编码的十种方法
Apr 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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
php中取得URL的根域名的代码
2011/03/23 PHP
PHP加密3DES报错 Call to undefined function: mcrypt_module_open() 如何解决
2016/04/17 PHP
php web环境和命令行环境下查找php.ini的位置
2019/07/17 PHP
jquery键盘事件使用介绍
2011/11/01 Javascript
JavaScript中如何通过arguments对象实现对象的重载
2014/05/12 Javascript
浅谈jQuery中的事件
2015/03/23 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
JS 在数组指定位置插入/删除数据的方法
2017/01/12 Javascript
JS中LocalStorage与SessionStorage五种循序渐进的使用方法
2017/07/12 Javascript
js使用ajax传值给后台,后台返回字符串处理方法
2018/08/08 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
uni-app微信小程序登录并使用vuex存储登录状态的思路详解
2019/11/04 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
jquery实现弹窗(系统提示框)效果
2019/12/10 jQuery
JS实现音乐钢琴特效
2020/01/06 Javascript
Python文件读取的3种方法及路径转义
2015/06/21 Python
利用Python实现命令行版的火车票查看器
2016/08/05 Python
Python中is与==判断的区别
2017/03/28 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
Python实现简单http服务器
2018/04/12 Python
利用Python yagmail三行代码实现发送邮件
2018/05/11 Python
Python并发之多进程的方法实例代码
2018/08/15 Python
Python学习笔记之读取文件、OS模块、异常处理、with as语法示例
2019/06/04 Python
Numpy的简单用法小结
2019/08/28 Python
python多线程实现TCP服务端
2019/09/03 Python
Python工程师必考的6个经典面试题
2020/06/28 Python
HTML5注册表单的自动聚焦与占位文本示例代码
2013/07/19 HTML / CSS
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
我有一个char * 型指针正巧指向一些int 型变量, 我想跳过它们。 为什么如下的代码((int *)p)++; 不行?
2013/05/09 面试题
写一个函数,要求输入一个字符串和一个字符长度,对该字符串进行分隔
2015/07/30 面试题
分公司经理岗位职责
2013/11/11 职场文书
质检的岗位职责
2013/11/17 职场文书
作风建设演讲稿
2014/05/23 职场文书
党员检讨书范文
2014/12/27 职场文书
用JS创建一个录屏功能
2021/11/11 Javascript