Python – 使用Opencv-Python库获取本机摄像头视频并保存为视频文件
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Python – 使用Opencv-Python库获取本机摄像头视频并保存为视频文件
原文链接:https://www.stubbornhuang.com/1212/
发布于:2021年03月18日 17:14:18
修改于:2021年03月18日 17:14:18

1 Opencv-Python获取本机摄像头视频
1.1 视频捕获
- 为了捕获本机摄像头的视频,需要创建一个VideoCapture对象,如果需要处理视频文件,则在构造对象时传入视频文件路径,如果需要捕获摄像头视频,则需要传入本机摄像头设备索引,如果电脑上只有一个摄像头,那么一般传入0,如果有多个摄像头,则根据需要传入响应摄像头的索引。
- cap.read():通常返回一个布尔值,如果视频流能被正确读取,那么发挥True,如果视频流不能被正确读取则返回False。
- cap.isOpened():检测cap是否初始化成功,如果返回True,则初始化成都,否则使用cap.open()打开cap
- cap.get(propId)/cap.set(propId, value):可以用于获取视频/设置视频的一些属性,propId具体含义如下:
propId | 参数 | 描述 |
---|---|---|
0 | cv2.CAP_PROP_POS_MSEC | 视频文件的当前位置(以毫秒为单位)或视频捕获时间戳记 |
1 | cv2.CAP_PROP_POS_FRAMES | 接下来要解码/捕获的帧的基于0的索引 |
2 | cv2.CAP_PROP_POS_AVI_RATIO | 视频文件的相对位置:0-开始,1-结束 |
3 | cv2.CAP_PROP_FRAME_WIDTH | 视频流中帧的宽度 |
4 | cv2.CAP_PROP_FRAME_HEIGHT | 视频流中帧的高度 |
5 | cv2.CAP_PROP_FPS | 视频帧率 |
6 | cv2.CAP_PROP_FOURCC | 4个字符表示的视频编码器格式 |
7 | cv2.CAP_PROP_FRAME_COUNT | 视频总帧数 |
8 | cv2.CAP_PROP_FORMAT | byretrieve()返回的Mat对象的格式 |
9 | cv2.CAP_PROP_MODE | 当前的捕获模式 |
10 | cv2.CAP_PROP_BRIGHTNESS | 图像亮度(仅适用于相机) |
11 | cv2.CAP_PROP_CONTRAST | 图像对比度(仅适用于相机) |
12 | cv2.CAP_PROP_SATURATION | 图像饱和度(仅适用于相机) |
13 | cv2.CAP_PROP_HUE | 图像的色相(仅适用于相机) |
14 | cv2.CAP_PROP_GAIN | 图像增益(仅适用于相机) |
15 | cv2.CAP_PROP_EXPOSURE | 曝光(仅适用于相机) |
16 | cv2.CAP_PROP_CONVERT_RGB | 布尔标志,指示是否应将图像转换为RGB |
17 | cv2.CAP_PROP_WHITE_BALANCE | |
18 | cv2.CAP_PROP_RECTIFICATION | 立体摄像机的整流标志 |
19 | cv2.CV_CAP_PROP_ISO_SPEED | 相机的ISO感光度 |
20 | cv2.CV_CAP_PROP_BUFFERSIZE | 内部缓冲存储器中存储的帧数 |
1.2 视频写
保存视频使用的是VideoWriter对象,
VideoWriter(filename, fourcc, fps, frameSize, isColor)
- filename : 需要保存的视频文件名
- fourcc : 视频编码
- fps : 自定义的视频帧率
- frameSize : 视频帧分辨率
- isColor : 黑白画面还是彩色的画面
其中fourcc可以通过以下方式创建:
fourcc = cv2.VideoWriter_fourcc('x', 'v', 'i', 'd')
fourcc = cv2.VideoWriter_fourcc('X', 'V', 'I', 'D')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
fourcc = cv2.VideoWriter_fourcc(*'xvid')
2 Opencv-Python捕获本机摄像头视频显示
# -*- coding: UTF-8 –*-
import cv2
cap = cv2.VideoCapture(0)
# 判断摄像头是否打开
while(cap.isOpened()):
# 从摄像头获取帧数据
ret, frame = cap.read()
if ret:
# 显示帧数据
cv2.imshow('frame', frame)
# 如果检测到了按键q则退出,不再显示摄像头并且保存视频文件
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头
cap.release()
# 删除全部窗口
cv2.destroyAllWindows()
3 Opencv-Python捕获本机摄像头视频并保存为视频
# -*- coding: UTF-8 –*-
import cv2
cap = cv2.VideoCapture(0)
camera_width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
camera_height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
video_width = int(camera_width)
video_height = int(camera_height)
# 设置相机宽度
cap.set(cv2.CAP_PROP_FRAME_WIDTH,video_width)
# 设置相机高度
cap.set(cv2.CAP_PROP_FRAME_HEIGHT,video_height)
# 设置视频编码,帧率,宽高
video_fourcc = cv2.VideoWriter_fourcc(*'XVID')
video_writer = cv2.VideoWriter(r'./output.avi', video_fourcc,30,(video_width,video_height))
# 判断摄像头是否打开
while(cap.isOpened()):
# 从摄像头获取帧数据
ret, frame = cap.read()
if ret:
# 显示帧数据
cv2.imshow('frame', frame)
# 向文件中写入帧数据
video_writer.write(frame)
# 如果检测到了按键q则退出,不再显示摄像头并且保存视频文件
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 释放摄像头
cap.release()
# 释放videowriter
video_writer.release()
# 删除全部窗口
cv2.destroyAllWindows()
当前分类随机文章推荐
- Python - 使用Python+websockets时报错:AttributeError: module 'websockets' has no attribute 'serve' 阅读1397次,点赞0次
- Python - BeautifulSoup的find()和findAll() 阅读2608次,点赞0次
- Python - 语音识别文本相似性度量库jiwer,可计算文字错误率WER、匹配错误率MER等相似性度量指标 阅读907次,点赞0次
- Python - 使用ffmepg批量转换某个文件夹以及所有子文件夹下所有的视频,修改其帧率/码率/分辨率到另一文件夹,并保留原有文件夹结构 阅读2453次,点赞0次
- Python - 不定长函数参数列表 阅读1822次,点赞0次
- Python - 使用scikit-video库获取视频的旋转角度并使用opencv_python根据旋转角度对视频进行旋转复原 阅读2451次,点赞1次
- Python - 获取当前py脚本文件所在的目录路径 阅读506次,点赞0次
- Python3爬虫 - 下载反盗链图片的方式 阅读2643次,点赞1次
- Python - ModuleNotFoundError: No module named 'skimage' 阅读122次,点赞0次
- Python - 字典dict遍历方法总结 阅读412次,点赞0次
全站随机文章推荐
- C++ - Windows和Linux系统下获取当前可执行程序的绝对路径 阅读1446次,点赞0次
- Pac - 自定义Pac的编写和语法规则 阅读4967次,点赞0次
- 资源分享 - GPU Computing Gems, Jade Edition 英文高清PDF下载 阅读1299次,点赞0次
- OpenCV - 打开视频文件,并对其中的每一帧图像进行Canny算子边缘化提取,并将结果保存为视频文件 阅读2789次,点赞0次
- 资源分享 - High Dynamic Range Imaging- Acquisition, Display, and Image-Based Lighting ( Second Edition )PDF下载 阅读2269次,点赞1次
- Mediapipe - 全身包含身体、手部、面部所有关键点标注位置对应图 阅读4466次,点赞3次
- 资源分享 - 计算机图形学 - 原理及实践 基础篇 原书第3版 , Computer Graphics Principles and Practice (Third Edition) 中文版PDF下载 阅读2115次,点赞2次
- C++ - Windows/Linux生成uuid(通用唯一识别码) 阅读1205次,点赞2次
- 资源分享 - Foundations of 3D computer graphics 英文高清PDF下载 阅读1034次,点赞0次
- 资源分享 - Microsoft Voxelized Upper Bodies – A Voxelized Point Cloud Dataset下载 阅读2571次,点赞0次
评论
164