OpenCV视频I/O(15)视频写入类VideoWriter之标识视频编解码器函数fourcc()的使用
- 操作系统:ubuntu22.04
- OpenCV版本:OpenCV4.9
- IDE:Visual Studio Code
- 编程语言:C++11
算法描述
将 4 个字符拼接成一个 FourCC 代码。
在 OpenCV 中,fourcc() 函数用于生成 FourCC 代码,这是一种用于标识视频编解码器的四位字符代码。FourCC 代码通常用于指定视频的编解码器类型。
函数原型
static int cv::VideoWriter::fourcc
(
char c1,
char c2,
char c3,
char c4
)
参数
- 参数c1:第一个字符。
- 参数c2:第二个字符。
- 参数c3:第三个字符。
- 参数c4:第四个字符。
返回值
返回一个整数,表示由四个字符组成的 FourCC 代码。
代码示例
#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;
}
原文地址:https://blog.csdn.net/jndingxin/article/details/142654095
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!