OpenCV杂记(3):写视频(cv::VideoWriter)

1. 写在前面

在使用OpenCV的时候,会经常遇到想连续的图像帧连起来存储成本地视频写入本地。OpenCV提供了相应的API接口VideoWriter来完成这一操作。

2. VideoWriter原型

cv::VideoWriter::VideoWriter(const String& filename, int fourcc, double fps, cv::Size frameSize, bool isColor = true)

其中,

filename:视频的保存路径和文件名(包含文件后缀)

fourcc:用于压缩帧的4字符编解码器代码(参数值为0,默认编码为AVI格式,不压缩,文件会很大)

fps:视频帧率

frameSize: 视频的分辨率

isColor:如果不为零,编码器将预期并编码彩色帧,否则将处理灰度帧。

关于fourcc这个参数,主要用于指定编码成为什么格式,如下所示危机中常用的:

cv2.VideoWriter_fourcc('I','4','2','0') ///< 未压缩的YUV编码,4:2:0色度子采样, 文件扩展名为.avi。

cv2.VideoWriter_fourcc('P','I','M','1') ///< MPEG-1, 文件扩展名为.avi。

cv2.VideoWriter_fourcc('X','V','I','D') ///< 较旧的MPEG-4编码, 文件扩展名为.avi。

cv2.VideoWriter_fourcc('m', 'p', '4', 'v') ///< 相对较旧的MPEG-4编码, 文件扩展名应.m4v。

cv2.VideoWriter_fourcc('X','2','6','4'): ///< 比较新的MPEG-4编码方式, 文件扩展名为.mp4。

cv2.VideoWriter_fourcc('H','2','6','4'): ///< 这个选项是传统的H264编码方式, 文件扩展名应为.mp4。

cv2.VideoWriter_fourcc('T','H','E','O') ///< Ogg Vorbis, 文件扩展名应为.ogv。

cv2.VideoWriter_fourcc('F','L','V','1') ///< Flash视频, 文件扩展名.flv。

cv2.VideoWriter_fourcc('M','J','P','G') ///< motion-jpeg视频, 文件扩展名为.avi。

3. 例程

如下是一个例程片段,给出了将图像帧保存为连续视频的示例。

cpp 复制代码
cv::VideoWriter ov;

std::string outputVideoPath = "./test1.mp4";

ov.open(outputVideoPath, cv::VideoWriter::fourcc('m', 'p', '4', 'v'), 30.0, cv::Size(1920, 1080));

cv::Mat ImgFrame;

for(int i=0; i<1000; i++){ ///< 1000 Frames

    std::stringstream jpg_name;

    jpg_name << setw(6) << setfill('0') << (i+1) << ".jpg";

    std::string jpg_path = "/share/images/" + jpg_name.str();

    ImgFrame = cv::imread(jpg_path);

    ov.write(ImgFrame);

}

ov.release();
相关推荐
一招定胜负12 小时前
OpenCV轮廓检测完全指南:从原理到实战
人工智能·opencv·计算机视觉
dazzle13 小时前
计算机视觉处理(OpenCV基础教学(二十二):霍夫变换技术详解)
人工智能·opencv·计算机视觉
格林威14 小时前
印刷电路板阻焊层缺失识别:防止短路风险的 7 个核心策略,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·机器学习·计算机视觉·视觉检测·工业相机
saoys16 小时前
Opencv 学习笔记:形态学开 / 闭运算(解决噪点与孔洞问题)
笔记·opencv·学习
Pyeako16 小时前
Opencv计算机视觉--边界填充&图像形态学
人工智能·python·opencv·计算机视觉·pycharm·图像形态学·边缘填充
曾帅16816 小时前
uniapp安卓启动图
android·opencv·uni-app
智驱力人工智能18 小时前
矿场轨道异物AI监测系统 构建矿山运输安全的智能感知防线 轨道异物检测 基于YOLO的轨道异物识别算法 地铁隧道轨道异物实时预警技术
人工智能·opencv·算法·安全·yolo·边缘计算
格林威18 小时前
基于灰度投影的快速图像配准:适用于产线在线对位的 5 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·数码相机·opencv·机器学习·计算机视觉·视觉检测·工业相机
sali-tec18 小时前
C# 基于OpenCv的视觉工作流-章9-均值滤波
人工智能·opencv·算法·计算机视觉·均值算法
子夜江寒18 小时前
基于 OpenCV 的图像边缘检测与轮廓分析
图像处理·opencv·计算机视觉