OpenCV 视频 I/O (15) 视频写入类 VideoWriter 的视频编解码器身份使用函数 fourcc
最编程
2024-10-01 10:04:37
...
#include <iostream>
#include <opencv2/opencv.hpp>
int main()
{
// 创建 VideoCapture 对象来捕获视频帧
cv::VideoCapture cap( 0 ); // 使用默认摄像头
// 检查摄像头是否成功打开
if ( !cap.isOpened() )
{
std::cerr << "Failed to open the camera." << std::endl;
return -1;
}
// 设置视频编码器的 FourCC 代码
int fourcc = cv::VideoWriter::fourcc( 'X', 'V', 'I', 'D' ); // 使用 XVID 编码器
// 创建 VideoWriter 对象
cv::VideoWriter writer( "output.avi", // 输出视频文件名
cv::CAP_FFMPEG, // 指定 API 后端为 FFMPEG
fourcc, // 视频编码器的 FourCC 代码
25, // 帧率(每秒帧数)
cv::Size( cap.get( cv::CAP_PROP_FRAME_WIDTH ), cap.get( cv::CAP_PROP_FRAME_HEIGHT ) ), // 帧大小
true // 是否为彩色视频
);
if ( !writer.isOpened() )
{
std::cerr << "Failed to initialize the video writer." << std::endl;
return -1;
}
// 捕获并写入视频帧
cv::Mat frame;
while ( true )
{
// 从摄像头读取一帧
if ( !cap.read( frame ) )
{
std::cout << "No frame grabbed." << std::endl;
break;
}
// 写入帧到视频文件
writer.write( frame );
// 显示当前帧
cv::imshow( "Live Camera", frame );
// 按 'q' 键退出循环
if ( cv::waitKey( 1 ) == 'q' )
{
break;
}
}
// 释放资源
cap.release();
writer.release();
cv::destroyAllWindows();
return 0;
}
上一篇: 无人机在抗洪中的作用!