C++opencv提取MP4文件的某一帧,修改后放回
时间: 2023-11-08 19:07:10 浏览: 140
要提取 MP4 文件的某一帧,可以使用 OpenCV 库中的 VideoCapture 类。该类可以打开视频文件并从中读取帧。此外,OpenCV 还提供了一些函数来修改帧并将其写回视频文件中。下面是一个简单的示例代码,演示如何提取 MP4 文件的第 100 帧,并将其颜色反转后写回视频文件。
```cpp
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
// 打开视频文件
cv::VideoCapture cap("test.mp4");
if (!cap.isOpened()) {
std::cerr << "Failed to open video file!" << std::endl;
return -1;
}
// 获取视频帧数和帧率
int frameCount = cap.get(cv::CAP_PROP_FRAME_COUNT);
double fps = cap.get(cv::CAP_PROP_FPS);
// 定位到第 100 帧
int frameIndex = 100;
cap.set(cv::CAP_PROP_POS_FRAMES, frameIndex);
// 读取帧
cv::Mat frame;
cap.read(frame);
// 颜色反转
cv::Mat invertedFrame;
cv::bitwise_not(frame, invertedFrame);
// 写回视频文件
cv::VideoWriter writer("output.mp4", cv::VideoWriter::fourcc('H', '2', '6', '4'), fps, frame.size());
if (!writer.isOpened()) {
std::cerr << "Failed to open output file!" << std::endl;
return -1;
}
writer.write(invertedFrame);
return 0;
}
```
在实际应用中,可能需要根据具体情况调整参数和增加错误处理。
阅读全文