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实现颜色rgb和hex相互转换的函数
Mar 19 Python
python中的错误处理
Apr 10 Python
python脚本爬取字体文件的实现方法
Apr 29 Python
浅谈python正则的常用方法 覆盖范围70%以上
Mar 14 Python
Python 机器学习库 NumPy入门教程
Apr 19 Python
python实战串口助手_解决8串口多个发送的问题
Jun 12 Python
python对象转字典的两种实现方式示例
Nov 07 Python
Django 实现xadmin后台菜单改为中文
Nov 15 Python
Python中低维数组填充高维数组的实现
Dec 02 Python
Python实现使用dir获取类的方法列表
Dec 24 Python
五分钟带你搞懂python 迭代器与生成器
Aug 30 Python
python爬虫判断招聘信息是否存在的实例代码
Nov 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
初学CAKEPHP 基础教程
2009/11/02 PHP
php 格式化数字的时候注意数字的范围
2010/04/13 PHP
php实现网页端验证码功能
2017/07/11 PHP
PHP微信公众号开发之微信红包实现方法分析
2017/07/14 PHP
用函数式编程技术编写优美的 JavaScript
2006/11/25 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
JavaScript实现的图像模糊算法代码分享
2014/04/22 Javascript
JS+CSS实现自动改变切换方向图片幻灯切换效果的方法
2015/03/02 Javascript
利用jQuery实现WordPress中@的ID悬浮显示评论内容
2015/12/11 Javascript
基于RequireJS和JQuery的模块化编程日常问题解析
2016/04/14 Javascript
前端弹出对话框 js实现ajax交互
2016/09/09 Javascript
Bootstrap源码解读表单(2)
2016/12/22 Javascript
html5 canvas 详细使用教程
2017/01/20 Javascript
JavaScript实现分页效果
2017/03/28 Javascript
angularjs中ng-bind-html的用法总结
2017/05/23 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
详解vue添加删除元素的方法
2018/06/30 Javascript
laydate只显示时分 不显示秒的功能实现方法
2019/09/28 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
Python中文件遍历的两种方法
2014/06/16 Python
一个超级简单的python web程序
2014/09/11 Python
LRUCache的实现原理及利用python实现的方法
2017/11/21 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python图像处理之简单画板实现方法示例
2018/08/30 Python
Python分割训练集和测试集的方法示例
2019/09/19 Python
Python中url标签使用知识点总结
2020/01/16 Python
Python实现异步IO的示例
2020/11/05 Python
scrapy在python爬虫中搭建出错的解决方法
2020/11/22 Python
python绘图模块之利用turtle画图
2021/02/12 Python
维多利亚的秘密官方旗舰店:VICTORIA’S SECRET
2018/04/02 全球购物
《棉鞋里的阳光》教学反思
2014/04/24 职场文书
家长会标语
2014/06/24 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
投资意向书
2014/07/30 职场文书
2014离婚协议书范文
2014/09/10 职场文书
三好学生主要事迹材料
2015/11/03 职场文书