c++读取视频帧,并保存
时间: 2024-01-08 18:04:13 浏览: 46
要读取视频帧并保存,可以使用 OpenCV 库。以下是示例代码:
```c++
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main(int argc, char** argv)
{
// 打开视频文件
VideoCapture cap(argv[1]);
if(!cap.isOpened()){
cerr << "无法打开视频文件" << endl;
return -1;
}
// 获取视频帧率和尺寸
double fps = cap.get(CAP_PROP_FPS);
Size size((int)cap.get(CAP_PROP_FRAME_WIDTH), (int)cap.get(CAP_PROP_FRAME_HEIGHT));
// 创建视频编码器并打开输出文件
VideoWriter writer("output.avi", VideoWriter::fourcc('M', 'J', 'P', 'G'), fps, size, true);
if(!writer.isOpened()){
cerr << "无法创建输出文件" << endl;
return -1;
}
// 读取并保存视频帧
Mat frame;
while(cap.read(frame)){
writer.write(frame);
imshow("视频帧", frame);
waitKey(1);
}
return 0;
}
```
上述代码中,首先打开视频文件并获取帧率和尺寸。然后,创建一个视频编码器来写入输出文件。最后,读取视频帧并将其写入输出文件,同时显示每个帧。在结束时,释放所有资源并返回0。