Opencv-python——视频帧的读取和重新保存_抽取视频帧生成新的视频opencv+python-程序员宅基地

技术标签: python  Opencv  音视频  图像处理  opencv  

大家在做传统的图像处理和深度学习时经常用到对视频的处理,这里放上python的opencv库实现的源码,功能是

读取视频的每一帧,将每一帧进行操作后重新整合成一个新的视频

,供大家参考使用:

import cv2

cap = cv2.VideoCapture('视频路径') #读取视频

fourcc = cv2.VideoWriter_fourcc(*'XVID')#设定输出视频的编码格式
#读取帧宽帧高
frame_width = int(cap.get(3))
frame_height = int(cap.get(4))
fps = cap.get(5)

out = cv2.VideoWriter('output.avi', fourcc, fps, (frame_width,frame_height))#设定输出视频相关参数 帧尺寸必须和输入时一致才能写入输出 帧率无所谓

#检测视频是否读取成功(首帧)
if cap.isOpened():
    ret,frame = cap.read()
else:
    ret = False 

#只要视频未读取完 就一直循环:
while ret:
    ret,frame  = cap.read() #读取帧
    if frame is not None: #防止视频结束后读取错误
        '''
        这里是一系列帧操作,假设处理完后的帧名叫img
        '''
        # cv2.namedWindow("img", cv2.WINDOW_NORMAL)
        # cv2.resizeWindow("img", 1280, 720)
        # cv2.imshow("img",img)
        # if cv2.waitKey(10) & 0xFF == ord('q'):
        #     break
        out.write(img) #写入输出视频

#一系列释放
cap.release()
out.release()
# cv2.destroyAllWindows()

这一串源码,大家在修改自己的视频路径填充自己需要的帧处理操作后可直接使用。

除了上述给出的注释外,写下一些使用时的注意点

1.关于编码格式fourcc的选择,不限于这里的“XVID格式”:

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

2.cv2.VideoWriter()函数,第一个参数是输出视频名称,第二个参数就是视频编码格式,第三个参数是输出视频的帧率(可以任意选择),输出帧的尺寸(这个非常关键,要确保输出帧的尺寸和输入图像一致,否则输出的视频将出现错误,这里采用了cap.get方法解决)。

3.if frame is not None不能省去,因为在视频读取完最后一帧后,ret的值将依旧为真,而frame值为空,如果不加这句将导致视频读取完后报错读不到frame:‘NoneType’ object has no attribute ‘shape’

4.注释部分以窗口的形式呈现输出视频,大家可以自行调整窗口的尺寸和相关设置。

注意:

如果最后输出的视频只有几KB大小,并且无法打开,很可能是cv2.VideoWriter出了问题,主要检查fourcc帧宽帧高的设置。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_52005740/article/details/125857039

智能推荐

摩斯密码_摩斯密码是通用的吗-程序员宅基地

文章浏览阅读1.6k次。摩斯密码_摩斯密码是通用的吗

物联网架构-程序员宅基地

文章浏览阅读797次,点赞13次,收藏18次。物联网架构。

已安装对应模块,但报无法找到模块“XXX”的声明文件的解决方案_找不到模块“qs”或其相应的类型声明-程序员宅基地

文章浏览阅读1.7k次。在一次做项目的时候,我封装一个axios的文件,想引入qs组件,因为axios已经自带qs组件了,所以直接。好了,工作忙,不吹了,直接在src文件目录下创建一个 shime-vue.d.ts文件,在里面写入。但是,它居然给我报了如下的提示(这张图片是我写博客的时候找的类似的一张图片,当成qs就好)保存,就可以了,qs可以正常引入了,不会再报找不到模块了。_找不到模块“qs”或其相应的类型声明

C# 静态代码块(静态构造函数)_java static块 c#-程序员宅基地

文章浏览阅读1.2w次。本来以为是和java一样写法。结果找了半天也没找到。原来有静态构造函数一样的功能。class SimpleClass{ // Static constructor static SimpleClass() { //... }}静态构造函数具有以下特点:静态构造函数既没有访问修饰符,也没有参数_java static块 c#

cad如何多选对象_CAD熟练这个shift的快捷键可以让你画图速度飞起-程序员宅基地

文章浏览阅读8.3k次。cad也疯狂cad快捷键对于每个设计师来说都是不可缺少的一部分,必须要一步一个脚印踏踏实实把基础打好,而熟练一些常用的快捷键,可以让你事半功倍。例如ctrl+c、ctrl+v、ctrl+shift+c、ctrl+shift+v实用的组合快捷键还很多,今天小编和大家分享一个很实用但很容易被大家忽略SHIFT键在CAD中的使用技巧。一、首先是最常见的用 shift键添加到选择集注意这里是不勾选时累加选..._cad多选快捷键

4键电子手表说明书_4键sport电子表使用说明书,按START键可循环选择12/24小时显示格式...-程序员宅基地

文章浏览阅读2.1w次,点赞3次,收藏4次。电子表使用说明书1 、正常时间模式:正常时间画面显示时、分、秒、星期。1.1 按START键显示日期。1.2 按RESET键显示每日闹铃时间。1.3 按MODE进入跑秒模式。1.4 按LIGHT键灯亮3秒。1.5 按RESET+START键打开/关闭每日闹铃,相应的图标显示/消失;按住两键则发出bibi的响声。1.6 按RESET+MODE键可打开/关闭整点报时(星期全显示为打开,反之则为关闭)。..._sport watch手表说明书图解

随便推点

MySQL开发技巧 - 分页和索引_本关任务:能分页读取表中数据,针对大数据量进行简单优化。-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏3次。第1关:MySQL 分页查询本关任务:能分页读取表中数据,针对大数据量进行简单优化。USE Products;#请在此处添加实现代码########## Begin ###########1.分页查询select prod_id from products limit 5,5;#2.用子查询优化分页查询语句select prod_id from products where prod_id >=(select prod_id from products limit 10,1) l_本关任务:能分页读取表中数据,针对大数据量进行简单优化。

WPF 控件专题 Image控件详解_wpf image-程序员宅基地

文章浏览阅读5.3k次。WPF 控件专题 Image控件详解_wpf image

OMPL库学习笔记0--写在前面_ompl time-程序员宅基地

文章浏览阅读2.7k次。 从今天开始学习OMPL库函数,自己是一个没有恒心的人,而OMPL库又实在比较庞大,这算是写在前面的自我鼓励吧。记录这些学习笔记是自我加深认识的一个过程,肯定存在许多错误,希望有看到错误的小伙伴可以不吝指教,也希望可以和大家多多交流,相互学习。 在了解OMPL库之前还有一步是必须的,那就是下载OMPL库,就像我们看一本书,你总得先有这本书吧 我自己在网上找了一..._ompl time

PMP之项目风险管理---实施定量风险分析_pmp敏感性分析-程序员宅基地

文章浏览阅读2.3k次。1. 气泡图_pmp敏感性分析

时序分析的基本概念和术语-程序员宅基地

文章浏览阅读3.4k次,点赞11次,收藏45次。一、发起沿和捕获沿发起沿:数据发送的时钟沿叫发起沿。捕获沿:数据接收的时钟沿叫捕获沿。发起沿和捕获沿之间一般情况下相差一个时钟周期。二、四种时序路径模型1.外部输入端口到内部寄存器的路径。2.内部寄存器之间的时序路径。3.内部寄存器到外部端口的时序路径。4.输入到输出的组合路径。上述四种时序路径的起点和终点start end point1.Device A/clk rega/D2.rega/clk regb/D_时序

SQL注入-报错注入_sql报错注入-程序员宅基地

文章浏览阅读9.5k次,点赞4次,收藏47次。sql注入之报错注入的演示与介绍_sql报错注入

推荐文章

热门文章

相关标签