opencv-python常用函数解析及参数介绍(九)——视频读取与保存

文章介绍了如何使用OpenCV库来处理视频。首先,通过cv2.VideoCapture()函数可以打开视频文件或摄像头,然后利用get方法获取视频的帧率、帧宽和帧高。接着,通过isOpened()检测视频是否成功打开,并使用read()方法播放视频帧。在播放过程中,用户按q键可退出。最后,文章展示了如何使用VideoWriter保存视频,包括设置编码器、帧率和视频尺寸。
摘要由CSDN通过智能技术生成

前言

本专栏前面文章中所介绍的都是对于图像的处理,那么如果是视频我们将如何进行处理呢?首先我们先要有个概念,就是视频是由帧组成的,而为了让人眼看见的视频变得流畅,一般一秒钟会有多个帧,这就有了一个概念,叫帧率,即每秒多少帧,下面我们将针对视频以及视频相关信息结合函数进行讲解

打开视频

使用cv2.VideoCapture()我们可以打开视频,当传入参数是视频路径时,打开视频文件;当传入参数是整数值时调用摄像头,一般电脑的默认摄像头从零开始,打开代码如下(假设我们调用0号摄像头):

capture = cv2.VideoCapture(0)

如果不出意外的话什么都没有发生,那么为什么呢,因为只是单纯的打开了,并没有对他进行其他操作,真正要显示还有额外的代码,为什么还有额外的代码呢?因为opencv是用于图像处理的,它本身就是要为图像服务的,而细分每一帧就可以按照帧对于视频进行处理,因为每一帧都是一个图像

获取视频信息

我们最常用的视频信息就是帧率以及帧这张图片的宽度和高度,之前我们已经实例化了一个capture,我们只需要使用get就可以获取相关信息,相关参数如下

参数作用
cv2.CAP_PROP_FRAME_WIDTH获取帧的宽度
cv2.CAP_PROP_FRAME_HEIGHT获取帧的高度
cv2.CAP_PROP_FPS帧率(fps)

根据英文名称也非常的好记

用法如下

width = capture.get(cv2.CAP_PROP_FRAME_WIDTH)
height = capture.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = capture.get(cv2.CAP_PROP_FPS)

调用get后返回值就是我们需要得到的信息

打开视频并播放

首先我们可以使用isOpened()来检测是否打开成功,如果返回True打开成功,返回False打开失败

if capture.isOpened()print("打开成功!")
else:
	print("打开失败!")

视频播放
使用read()即可读取帧,返回一个返回值和帧,如果返回值为空说明视频已经读取完了,此时frame为None,为了通用,建议打开摄像头的也这样写,我们可以看到,frame就是我们之前遇到的图片的文件,只不过连续不断的输出一张张图片罢了,当输入键盘中的q键时退出摄像头

while capture.isOpened():
	ret, frame = capture.read()
	if ret:
		cv2.imshow('frame', frame)
		if cv2.waitKey(0) & 0xFF == ord('q'):
			break
			
capture.release()

视频的保存

无论是从文件中的视频还是打开摄像头的视频都可以进行保存,我们假设path是要保存的视频路径(含视频名称和类型)

fourcc = cv2.VideoWriter_fourcc(*"XVID")
writer = cv2.VideoWriter(path, fourcc, int(fps), (int(width), int(height)), False)

那么我们在之前的代码中增添一部分就可以保存视频

while capture.isOpened():
	ret, frame = capture.read()
	if ret:
		cv2.imshow('frame', frame)
		writer.write(frame)
		if cv2.waitKey(0) & 0xFF == ord('q'):
			break
			
capture.release()
writer.release()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

艾醒(AiXing-w)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值