Python利用VideoCapture读取视频或摄像头并进行保存
作者:AI算法联盟 发布时间:2022-12-06 18:26:27
标签:Python,VideoCapture,读取,视频,摄像头
一、语法:cap = cv2.VideoCapture(0)
说明:参数0表示默认为笔记本的内置第一个摄像头,如果需要读取已有的视频则参数改为视频所在路径路径,例如:cap=cv2.VideoCapture('video.mp4')
二、语法:cap.isOpened()
说明:判断视频对象是否成功读取,成功读取视频对象返回True。
三、语法:ret,frame = cap.read()
说明:按帧读取视频,返回值ret是布尔型,正确读取则返回True,读取失败或读取视频结尾则会返回False。frame为每一帧的图像,这里图像是三维矩阵,即frame.shape = (640,480,3),读取的图像为BGR格式。
四、语法:key = cv2.waitKey(1)
说明:等待键盘输入,参数1表示延时1ms切换到下一帧,参数为0表示显示当前帧,相当于暂停。
五、读取摄像头并保存为视频代码演示
import cv2
def videocapture():
cap=cv2.VideoCapture(0) #生成读取摄像头对象
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取视频的宽度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取视频的高度
fps = cap.get(cv2.CAP_PROP_FPS) #获取视频的帧率
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC)) #视频的编码
#定义视频对象输出
writer = cv2.VideoWriter("video_result.mp4", fourcc, fps, (width, height))
while cap.isOpened():
ret, frame = cap.read() #读取摄像头画面
cv2.imshow('teswell', frame) #显示画面
key = cv2.waitKey(24)
writer.write(frame) #视频保存
# 按Q退出
if key == ord('q'):
break
cap.release() #释放摄像头
cv2.destroyAllWindows() #释放所有显示图像窗口
if __name__ == '__main__' :
videocapture()
六、读取视频并按帧进行保存代码演示:
import numpy as np
import cv2
import os
def video2image(video_dir,save_dir):
cap = cv2.VideoCapture(video_dir) #生成读取视频对象
n = 1 #计数
width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) #获取视频的宽度
height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) #获取视频的高度
fps = cap.get(cv2.CAP_PROP_FPS) #获取视频的帧率
fourcc = int(cap.get(cv2.CAP_PROP_FOURCC)) #视频的编码
# 定义视频输出
#writer = cv2.VideoWriter("teswellvideo_02_result.mp4", fourcc, fps, (width, height))
i = 0
timeF = int(fps) #视频帧计数间隔频率
while cap.isOpened():
ret,frame = cap.read() #按帧读取视频
#到视频结尾时终止
if ret is False :
break
#每隔timeF帧进行存储操作
if (n % timeF == 0) :
i += 1
print('保存第 %s 张图像' % i)
save_image_dir = os.path.join(save_dir,'%s.jpg' % i)
print('save_image_dir: ', save_image_dir)
cv2.imwrite(save_image_dir,frame) #保存视频帧图像
n = n + 1
cv2.waitKey(1) #延时1ms
cap.release() #释放视频对象
#读取文件夹所有视频,每个视频按帧保存图像
def video2image_multi(video_path,save_path):
video_list = os.listdir(video_path)
for i in range(len(video_list)) :
video_dir = os.path.join(video_path,video_list[i])
cap = cv2.VideoCapture(video_dir)
fps = cap.get(cv2.CAP_PROP_FPS) # 视频的帧率
save_num = 0
n = 1 #计数
timeF = int(fps) # 视频帧计数间隔频率
while cap.isOpened():
ret,frame = cap.read()
if ret is False :
break
#每隔timeF帧进行存储操作
if (n % timeF == 0) :
save_num += 1
save_image_dir = os.path.join(save_path,'%s_%s.jpg' % (i,save_num))
cv2.imwrite(save_image_dir,frame)
n = n + 1
cv2.waitKey(1)
cap.release()
print('读取第 %s 个视频完成 !!!' % i)
if __name__ == '__main__' :
video_to_image(r'E:\AI\video.mp4', r'E:\AI\video2image')
来源:https://blog.csdn.net/weixin_40922285/article/details/102967331
0
投稿
猜你喜欢
- 今天想说的是内容和容器的关系,顺便把之前设计中碰到的问题和大家一起探讨下。我们从软件的设置说起。(这里以QQ的设置举例)一个软件的设置(常称
- 由于计算机软件的非法复制,通信的泄密、数据安全受到威胁。一般为了安全,会要求将数据库名称、密码等信息进行加密。所以加密在开发过程中是经常使用
- 1. 普通装饰器 import logging1. foo = use_loggine(foo) def use_loggine(func)
- 一、前提条件安装了Fiddler了(用于抓包分析)谷歌或火狐浏览器如果是谷歌浏览器,还需要给谷歌浏览器安装一个SwitchyOmega插件,
- 知识点文件读写基础语法字符串处理字符拼接代码解析导入模块import platformimport stringimport random将
- 今天我们来学习一下 异常语法 中的另一个成员 —> finally ; 通过学习 finally ,可以帮助我们更
- 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立
- 0x00 字符的编码计算机毕竟是西方国家的发明,最开始并没有想到会普及到全世界,只用一个字节中的7位(ASCII)来表示字符对于现在庞大的文
- 本文实例分析了python的私有属性和方法。分享给大家供大家参考。具体实现方法如下:python默认的成员函数和成员变量都是公开的,并且没有
- hmac主要应用在身份验证中,它的使用方法是这样的:1. 客户端发出登录请求(假设是浏览器的GET请求)2. 服务器返回一个随机值,并在会话
- 以下为测试例子。 1.首先创建两张临时表并录入测试数据: 代码如下:create table #temptest1 ( id i
- 1. 用Dreamweaver 4.0制作闪动的Flash按钮选择菜单Insert→Interactive Images→Flash But
- 一、k-近邻算法原理及API1.k-近邻算法原理如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则
- --SQL正则替换函数 代码如下:CREATE function dbo.regexReplace ( @source ntext, --
- 你知道(X)HTML中最多余的标签中是什么吗?在我看来就是这个<a>标签,不错,就是每个网站使用最多的超级链接标签<a&g
- 本文主要介绍Python3.9的一些新特性,如:更快速的进程释放,性能的提升,简便的新字符串函数,字典并集运算符以及更兼容稳定的内部API,
- 在使用SQL Server 的过程,中由于经常需要从多个不同地点将数据集中起来或向多个地点复制数据,所以数据的导出,导入是极为常见的操作.我
- Python的装饰器(decorator)是一个很棒的机制,也是熟练运用Python的必杀技之一。装饰器,顾名思义,就是用来装饰的,它装饰的
- xmlhttp,IE不支持overrideMimeType()方法,即使是IE7。 // Mozilla/Safari/
- 一.权限表mysql数据库中的3个权限表:user 、db、 host权限表的存取过程是:1)先从user表中的host、 user、 pa