OpenCV 中如何使用 VideoCapture 类?

· 约 3 分钟读完 · 第 109 / 144 章

推荐答案

在 OpenCV 中,VideoCapture 类用于从视频文件、图像序列或摄像头捕获视频帧。以下是使用 VideoCapture 类的基本步骤:

本题详细解读

1. 创建 VideoCapture 对象

cv::VideoCapture cap; 创建了一个 VideoCapture 对象。这个对象可以用于从视频文件、图像序列或摄像头捕获视频帧。

2. 打开视频源

使用 cap.open("video.mp4"); 打开一个视频文件。你也可以使用 cap.open(0); 来打开默认的摄像头(通常是电脑的内置摄像头)。open 方法返回一个布尔值,表示是否成功打开视频源。

3. 检查是否成功打开

在打开视频源后,使用 cap.isOpened() 检查是否成功打开。如果返回 false,则表示打开失败,可能是视频文件路径错误或摄像头不可用。

4. 读取视频帧

使用 cap >> frame; 从视频源中读取一帧图像。frame 是一个 cv::Mat 对象,存储了当前帧的图像数据。如果读取失败(例如视频结束),frame 将为空。

5. 显示视频帧

使用 cv::imshow("Video", frame); 显示当前帧。imshow 的第一个参数是窗口名称,第二个参数是要显示的图像。

6. 退出循环

在循环中,使用 cv::waitKey(30) 等待 30 毫秒,并检查是否按下了 'q' 键。如果按下 'q' 键,则退出循环。

7. 释放资源

在程序结束前,使用 cap.release(); 释放 VideoCapture 对象占用的资源,并使用 cv::destroyAllWindows(); 关闭所有打开的窗口。

通过以上步骤,你可以使用 OpenCV 的 VideoCapture 类来捕获和显示视频帧。