python+openCV对视频进行截取的实现
作者:ChristmasBoy 发布时间:2023-01-18 22:27:53
标签:openCV,视频,截取
使用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
来源:https://segmentfault.com/a/1190000038298546


猜你喜欢
- 如下所示:#先下载psutil库:pip install psutilimport psutilimport os,datetimedef
- “到底是什么将艺术和设计分开的?”这样一个话题听起来费解,长时间以来, 也已经被讨论过无数次。艺术家和设计师都是通过共通的知识和素养来创造视
- 目录Python 数据化运营1、内容介绍2、一般应用场景3、聚类的常见方法4、Keans聚类实现5、聚类的评估指标6、聚类效果可视化7、数据
- 写在前面的话:Part 1记得刚毕业那时,常幻想着自己是个大艺术家,满怀憧憬的想找一份理想的工作。后来入了行,慢慢的发现自己好像不是这块料;
- Myisam_revocer控制了Myisam查找和修复错误的方式。自动修复MySQL的myisam表常用MySQL的童鞋都知道这个myis
- 实现SQL Server 原生数据从XML生成JSON数据的实例代码 SQL Server 是关系数据库,查询结果通
- 片头语:因为工作需要,在CentOS上搭建环境MySQL+Python+MySQLdb,个人比较习惯使用Windows系统的操作习惯,对纯字
- 问题背景a=[1,4,2,1,5,6,9,0]#删除列表中的元素,其所在的位置为[1,3,7]del_index=[1,3,7]tmp=[i
- 本文实例讲述了php防止sql注入中过滤分页参数的方法。分享给大家供大家参考。具体分析如下:就网络安全而言,在网络上不要相信任何输入信息,对
- 本文实例为大家分享了python实现knn算法的具体代码,供大家参考,具体内容如下knn算法描述对需要分类的点依次执行以下操作:1.计算已知
- 对于路径中含有中文的图像,直接用cv2.imread读取会报错,上次看到有大佬使用cv2.imdecode就可以正常读取,有点好奇,所以今天
- 本文为大家分享了vuejs事件中心管理组件间的通信,供大家参考,具体内容如下事件中心这个可以是一个空的全局的Vue实例,其他的组件利用这个实
- 微博模拟登录这是本次爬取的网址:https://weibo.com/一、请求分析找到登录的位置,填写用户名密码进行登录操作看看这次请求响应的
- Python函数库众多,而且在不断更新,所以学习这些函数库最有效的方法,就是阅读Python官方文档。同时借助Google和百度。本文介绍的
- 在MySQL中可以使用IF()、IFNULL()、NULLIF()、ISNULL()函数进行流程的控制。1、IF()函数的使用IF(expr
- 介绍残差网络是何凯明大神的神作,效果非常好,深度可以达到1000层。但是,其实现起来并没有那末难,在这里以tensorflow作为框架,实现
- 【人工智能项目】混合高斯模型运动目标检测本次工作主要对视频中运动中的人或物的边缘背景进行检测。那么走起来瓷!!!原视频高斯算法提取工作imp
- 环境:Zend Studio 8.0Zend Studio是PHP开发者的首选开发工具,其地位相当于微软开发工具中的Visual Studi
- 在pandas中怎么样实现类似mysql查找语句的功能:select * from table where column_name = so
- Python2.5之后引入了上下文管理器(context manager),算是Python的黑魔法之一,它用于规定某个对象的使用范围。本文