- OpenCV Python 教程
- OpenCV Python - 首页
- OpenCV Python - 概述
- OpenCV Python - 环境配置
- OpenCV Python - 读取图像
- OpenCV Python - 写入图像
- OpenCV Python - 使用 Matplotlib
- OpenCV Python - 图像属性
- OpenCV Python - 按位运算
- OpenCV Python - 形状和文本
- OpenCV Python - 鼠标事件
- OpenCV Python - 添加轨迹条
- OpenCV Python - 调整大小和旋转
- OpenCV Python - 图像阈值化
- OpenCV Python - 图像滤波
- OpenCV Python - 边缘检测
- OpenCV Python - 直方图
- OpenCV Python - 颜色空间
- OpenCV Python - 图像变换
- OpenCV Python - 图像轮廓
- OpenCV Python - 模板匹配
- OpenCV Python - 图像金字塔
- OpenCV Python - 图像加法
- OpenCV Python - 图像混合
- OpenCV Python - 傅里叶变换
- OpenCV Python - 捕获视频
- OpenCV Python - 播放视频
- OpenCV Python - 从视频提取图像
- OpenCV Python - 从图像生成视频
- OpenCV Python - 人脸检测
- OpenCV Python - 均值漂移/CamShift
- OpenCV Python - 特征检测
- OpenCV Python - 特征匹配
- OpenCV Python - 数字识别
- OpenCV Python 资源
- OpenCV Python - 快速指南
- OpenCV Python - 资源
- OpenCV Python - 讨论
OpenCV Python - 从摄像头捕获视频
通过使用 OpenCV 库中的 **VideoCapture()** 函数,可以非常轻松地在 OpenCV 窗口中从摄像头捕获实时流。
此函数需要一个设备索引作为参数。您的计算机可能连接了多个摄像头。它们由从 0 开始的索引枚举,内置网络摄像头为 0。该函数返回一个 VideoCapture 对象。
cam = cv.VideoCapture(0)
打开摄像头后,我们可以借助 **read()** 函数读取其连续帧。
ret,frame = cam.read()
read() 函数读取下一个可用的帧并返回一个值(True/False)。此帧现在使用 **cvtColor()** 函数渲染为所需的色彩空间,并在 OpenCV 窗口中显示。
img = cv.cvtColor(frame, cv.COLOR_BGR2RGB) # Display the resulting frame cv.imshow('frame', img)
要将当前帧捕获到图像文件,可以使用 **imwrite()** 函数。
cv2.imwrite(“capture.png”, img)
要将来自摄像头的实时流保存到视频文件,OpenCV 提供了 VideoWriter() 函数。
cv.VideoWriter( filename, fourcc, fps, frameSize)
fourcc 参数是视频编解码器的标准化代码。OpenCV 支持各种编解码器,例如 DIVX、XVID、MJPG、X264 等。fps 和 framesize 参数取决于视频捕获设备。
VideoWriter() 函数返回一个 VideoWrite 流对象,捕获的帧将依次写入循环中。最后,释放帧和 VideoWriter 对象以完成视频的创建。
示例
以下示例从内置网络摄像头读取实时视频流并将其保存到 output.avi 文件。
import cv2 as cv cam = cv.VideoCapture(0) cc = cv.VideoWriter_fourcc(*'XVID') file = cv.VideoWriter('output.avi', cc, 15.0, (640, 480)) if not cam.isOpened(): print("error opening camera") exit() while True: # Capture frame-by-frame ret, frame = cam.read() # if frame is read correctly ret is True if not ret: print("error in retrieving frame") break img = cv.cvtColor(frame, cv.COLOR_BGR2RGB) cv.imshow('frame', img) file.write(img) if cv.waitKey(1) == ord('q'): break cam.release() file.release() cv.destroyAllWindows()
广告