Python OpenCV(cv2) 摄像头开启+录像
最近在研究opencv,也就是cv2库,想实现开启摄像头实时显示画面+录像,从网上看了不少案例和代码,动手实践时发现很多案例和代码都没有经过严格验证,导致bug不断,生成的视频文件也不能播放。经过持续百度和摸索,已经成功修复所有bug。
bug1:运行时opencv报错 →fourcc参数格式必须是小写(*'mp4v'),用大写会有OpenCV报错
bug2:生成的视频size只有1kb,并且无法播放(qq影音) →frameSize的WIDTH/HEIGHT必须和摄 像头的逐帧分辨率一致
bug3:录制完成的视频播放时速度太快→用笔记本电脑验证,FPS<=6可以解bug,网上好多教程和案例里面FPS都是12、24,数值太高
如下为修复后的代码,可直接使用(网上案例太多,忘了是从哪儿抄的,如有侵权请联系):
import cv2 def captureVideoFromCamera():cap = cv2.VideoCapture(0,cv2.CAP_DSHOW)#WIDTH/HEIGHT必须和摄像头逐帧捕获的分辨率一致,否则会生成1kb视频文件并且无法播放,by Navy 2022-03-31#通过frame.shape获取摄像头逐帧分辨率,by Navy 2022-03-31WIDTH = 640HEIGHT = 480FILENAME = r'd:\myvideo.MP4'FPS = 24cap.set(cv2.CAP_PROP_FPS, 24)#如下fourcc参数必须是小写,用大写会有OpenCV报错,by Navy 2022-03-31fourcc = cv2.VideoWriter_fourcc(*'mp4v')out = cv2.VideoWriter(FILENAME, fourcc=fourcc, fps=FPS,frameSize=(WIDTH,HEIGHT))if not cap.isOpened():print("Cannot open camera")exit()while True:# 逐帧捕获ret, frame = cap.read()# 如果正确读取帧,ret为Trueif not ret:print("Can't receive frame (stream end?). Exiting ...")break#如下通过frame.shape获取摄像头逐帧分辨率,by Navy 2022-03-31print(frame.shape)#frame = cv2.flip(frame, 1) # 水平翻转ret = out.write(frame)#gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)#gray = cv2.cvtColor(frame, cv2.COLOR_GRAY2BGR)# 显示结果帧ecv2.namedWindow('frame', cv2.WND_PROP_FULLSCREEN)#支持全屏,by Navy,2022.04.01cv2.imshow('frame', frame)if cv2.waitKey(1) == ord('q'): break# 完成所有操作后,释放捕获器out.release()cap.release()cv2.destroyAllWindows()captureVideoFromCamera()
Python OpenCV(cv2) 摄像头开启+录像相关推荐
- python+opencv打开摄像头、拍摄指定次数的照片_python+openCV调用摄像头拍摄和处理图片的实现...
在深度学习过程中想做手势识别相关应用,需要大量采集手势图片进行训练,作为一个懒人当然希望飞快的连续采集图片并且采集到的图片就已经被处理成统一格式的啦..于是使用python+openCV调用摄像头,在 ...
- python opencv打开摄像头,截图保存
python opencv打开摄像头,截图保存,学习结果如下: 使用python打开摄像头 import cv2 cap = cv2.VideoCapture(0) #设置摄像头 0是默认的摄像头 如 ...
- python opencv调用摄像头并追踪移动物体,浅析Python+OpenCV使用摄像头追踪人脸面部血液变化实现脉搏评估...
使用摄像头追踪人脸由于血液流动引起的面部色素的微小变化实现实时脉搏评估. 效果如下(演示视频): 由于这是通过比较面部色素的变化评估脉搏所以光线.人体移动.不同角度.不同电脑摄像头等因素均会影响评估效 ...
- Python+opencv调用摄像头实现拍照并保存
Python+opencv调用摄像头实现拍照并保存 安装 OpenCV库 详细源码 注意事项 安装 OpenCV库 pip install opencv-python 详细源码 调用外接摄像头实现拍照 ...
- python+openCV调用摄像头拍摄和处理图片
在深度学习过程中想做手势识别相关应用,需要大量采集手势图片进行训练,作为一个懒人当然希望飞快的连续采集图片并且采集到的图片就已经被处理成统一格式的啦..于是使用python+openCV调用摄像头,在 ...
- python opencv设置摄像头分辨率以及各个参数的方法
摘自:http://www.cppcns.com/jiaoben/python/224278.html python opencv设置摄像头分辨率以及各个参数的方法 发布时间: 2019-04-21 ...
- python opencv cv2在图片中画mask掩码/掩膜
python opencv cv2在图片中画mask掩膜 import cv2 import numpy as np from PIL import Image import matplotlib.p ...
- python opencv cv2.imread
python opencv cv2.imread 环境说明 opencv 安装 pip install opencv-python opencv:opencv_python 4.5.5.64 介绍 方 ...
- python opencv 调用摄像头失败问题的解决 Windows
省流: 内含 Python Opencv 双目相机拍照代码(手动 or 自动),可自取: 如果你的 cv2.VideoCapture() 函数卡住但不报错,打开 Windows "相机&qu ...
最新文章
- _捷豹F-pace汽车音响改装黄金声学,中道隔音——哈尔滨小蒋
- 计算机网络---非归零码、曼彻斯特编码和差分曼彻斯特编码
- python 去除所有的中文 英文标点符号
- Qt工作笔记-简单的画图工具
- iPhone 11终于没涨价但依然暴利 外媒:64GB起始容量就是个笑话
- 三管齐下!TB 级文件的上传性能瞬间被优化 100 倍!
- Linux内核同步方法(一)
- 懒加载(延迟加载)之后,在使用数据过程中容易出现的bug
- 剑指offer面试题[20]-顺时针打印矩阵
- Hibernate配置文件
- 高频JMeter软件测试面试题
- 分享添加字幕最简单的方法 视频制作超简单
- 以推理游戏开始2007年吧!
- android 根目录缓存,Android 文件目录存储介绍 缓存目录 | 私有目录 | 系统根目录 | 用户可见目录...
- 硬件建设为学校发展服务器,《学校机房建设工程设计-建议方案》.docx
- FBX SDK动画开发
- FTP如何用计算机名,ftp服务器使用虚拟主机名(怎么设置ftp服务器)
- 正运动学 与 逆运动学 区别
- x265-1.7版本-common/cudata.h注释
- 哈姆雷特与雷欧斯提的决斗