VideoCapture如何使用得到与cvQueryFrame同样的效果
时间: 2024-05-17 20:18:32 浏览: 13
`cv::VideoCapture` 类可以用来读取视频文件或者实时捕获摄像头的图像,可以得到与 `cvQueryFrame` 函数相同的效果。下面是一个使用 `cv::VideoCapture` 类读取摄像头图像并显示的示例代码:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 打开摄像头
VideoCapture cap(0);
if (!cap.isOpened())
{
printf("无法打开摄像头\n");
return -1;
}
while (true)
{
// 读取一帧图像
Mat frame;
cap >> frame;
if (frame.empty())
{
printf("无法获取摄像头图像\n");
break;
}
// 显示图像
imshow("Camera", frame);
// 按下 ESC 键退出
if (waitKey(30) == 27)
{
break;
}
}
return 0;
}
```
在这个示例中,首先使用 `VideoCapture` 类打开了编号为 0 的摄像头设备。然后,进入一个循环,不断调用 `cap >> frame` 读取一帧图像,并将其存储在 `cv::Mat` 类型的变量 `frame` 中。如果读取失败,则会输出一条错误信息并退出循环。然后,使用 `imshow` 函数显示 `frame` 中的图像,并通过 `waitKey` 函数等待用户按下一个按键,如果按下的是 ESC 键,则退出循环。
注意,`cv::VideoCapture` 类的使用方法和 `cvQueryFrame` 函数略有不同,但是可以得到相同的效果。另外,需要注意的是,在使用 `cv::VideoCapture` 类时,需要调用 `isOpened` 函数判断是否打开成功。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)