欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

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; }