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 相关文章推荐
天翼开放平台免费短信验证码接口使用实例
Dec 18 Python
Python使用代理抓取网站图片(多线程)
Mar 14 Python
Linux 发邮件磁盘空间监控(python)
Apr 23 Python
python发送告警邮件脚本
Sep 17 Python
pandas筛选某列出现编码错误的解决方法
Nov 07 Python
python实现支付宝转账接口
May 07 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
基于python解线性矩阵方程(numpy中的matrix类)
Oct 21 Python
python3实现用turtle模块画一棵随机樱花树
Nov 21 Python
如何使用PyCharm将代码上传到GitHub上(图文详解)
Apr 27 Python
解决django migrate报错ORA-02000: missing ALWAYS keyword
Jul 02 Python
深度学习tensorflow基础mnist
Apr 14 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二分法在IP地址查询中的应用
2008/08/12 PHP
php中使用exec,system等函数调用系统命令的方法(不建议使用,可导致安全问题)
2012/09/07 PHP
解析php函数method_exists()与is_callable()的区别
2013/06/21 PHP
php json_encode值中大括号与花括号区别
2013/09/30 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十三)
2014/06/26 PHP
php将html转成wml的WAP标记语言实例
2015/07/08 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
JS实现self的resend
2010/07/22 Javascript
JQuery对checkbox操作 (循环获取)
2011/05/20 Javascript
两种方法实现文本框输入内容提示消失
2013/03/17 Javascript
基于豆瓣API+Angular开发的web App
2015/01/02 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
AngularJS基础 ng-include 指令简单示例
2016/08/01 Javascript
JavaScript定义数组的三种方法(new Array(),new Array('x','y')
2016/10/04 Javascript
深入学习js瀑布流布局
2016/10/14 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
使用jquery判断一个元素是否含有一个指定的类(class)实例
2017/02/12 Javascript
解决Vue页面固定滚动位置的处理办法
2017/07/13 Javascript
详解javascript常用工具类的封装
2018/01/30 Javascript
JavaScript简单实现关键字文本搜索高亮显示功能示例
2018/07/25 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
详解babel升级到7.X采坑总结
2019/05/12 Javascript
[05:14]辉夜杯主赛事第二日 RECAP精彩回顾
2015/12/27 DOTA
Python version 2.7 required, which was not found in the registry
2014/08/26 Python
Python中正则表达式详解
2017/05/17 Python
Python在图片中插入大量文字并且自动换行
2019/01/02 Python
python树莓派红外反射传感器
2019/01/21 Python
Python网络爬虫之爬取微博热搜
2019/04/18 Python
Pandas DataFrame数据的更改、插入新增的列和行的方法
2019/06/25 Python
浅谈keras使用中val_acc和acc值不同步的思考
2020/06/18 Python
《值日生》教学反思
2014/02/17 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
如何使用CocosCreator对象池
2021/04/14 Javascript
Java中生成微信小程序太阳码的实现方案
2022/06/01 Java/Android
Vue2项目中对百度地图的封装使用详解
2022/06/16 Vue.js