opencv调用摄像头获取视频并保存为yuv格式视频
时间: 2024-05-18 07:16:49 浏览: 20
你可以使用OpenCV来调用摄像头并获取视频流,然后将视频流保存为YUV格式的视频。下面是一个示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
// 打开摄像头
VideoCapture cap(0);
if (!cap.isOpened()) {
cerr << "Failed to open camera!" << endl;
return -1;
}
// 获取摄像头参数
int width = cap.get(CAP_PROP_FRAME_WIDTH);
int height = cap.get(CAP_PROP_FRAME_HEIGHT);
int fps = cap.get(CAP_PROP_FPS);
// 创建输出YUV文件
VideoWriter writer("output.yuv", cv::VideoWriter::fourcc('I', '4', '2', '0'), fps, Size(width, height), false);
// 逐帧读取并保存视频流
Mat frame;
while (cap.read(frame)) {
cv::cvtColor(frame, frame, cv::COLOR_BGR2YUV_I420);
writer.write(frame);
imshow("frame", frame);
if (waitKey(1) >= 0) break;
}
// 释放资源
cap.release();
writer.release();
return 0;
}
```
在上面的代码中,我们使用cv::VideoCapture类来打开摄像头并获取视频流。我们使用cv::VideoCapture::get函数来获取摄像头的参数,包括宽度、高度和帧率。然后,我们使用cv::VideoWriter类来创建输出YUV文件,并使用cv::VideoWriter::fourcc函数来指定输出文件的编码格式为I420。
在读取每一帧视频流时,我们使用cv::cvtColor函数将BGR格式的帧转换为YUV格式,并使用cv::VideoWriter::write函数将每一帧数据写入输出YUV文件。最后,我们使用cv::VideoCapture::release和cv::VideoWriter::release函数来释放资源。
注意,在保存YUV格式的视频时,每一帧数据的大小为width * height * 3 / 2,其中Y占据width * height字节,U和V各占据width * height / 4字节。
相关推荐
![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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)