16.OpenCV摄像头捕获、视频读取与保存
OpenCV摄像头捕获、视频读取与保存
在计算机视觉和图像处理领域,视频处理是非常常见的任务。无论是实时监控、视频分析,还是数据采集与存储,OpenCV 都提供了简单易用的接口。本文将详细介绍如何使用 OpenCV C++ 实现以下功能:
摄像头捕获与显示:利用摄像头实时获取视频流并显示到窗口上。
实时视频保存:将捕获的视频实时写入文件。
视频读取与播放:从保存的视频文件中读取并显示视频内容。
下面我们将逐步讲解这些操作的原理、主要函数及示例代码。 过多API参考官方文档opencv API文档
1. 摄像头捕获与显示
利用 OpenCV 中的 cv::VideoCapture 类,可以方便地从摄像头(或其它视频源)中读取视频帧。常用步骤如下:
创建 VideoCapture 对象:通过设备索引(例如 0 表示默认摄像头)打开摄像头。
循环读取视频帧:使用 read 或 >> 操作符获取每一帧图像。
显示视频帧:利用 imshow 函数在窗口中实时显示视频内容。
退出条件:一般通过检测按键(例如 ESC 键)实现退出循环。
#include
#include
using namespace cv;
using namespace std;
int main() {
// 打开默认摄像头(设备索引为 0)
VideoCapture cap(0);
if (!cap.isOpened()) {
cerr << "无法打开摄像头!" << endl;
return -1;
}
// 设置摄像头分辨率(可选)
cap.set(CAP_PROP_FRAME_WIDTH, 640);
cap.set(CAP_PROP_FRAME_HEIGHT, 480);
Mat frame;
while (true) {
// 读取当前帧
cap >> frame;
if (frame.empty()) {
cerr << "读取帧失败!" << endl;
break;
}
// 显示当前帧
imshow("摄像头实时视频", frame);