一、读取视频流

在使用OpenCV读取摄像头,或者处理一些磁盘中保存的视频文件时,通常使用VideoCapture进行读取。

std::string video_path("/path/to/the/video");
cv::VideoCapture VCap( video_path );
if( !VCap.isOpened() )
{
CV_Error_(cv::Error::StsBadArg, ("Error opening video: %s", video_path.c_str()));
}

二、写入视频流

而对于处理后的结果,想要编码并保存到磁盘时,通常使用VideoWriter来操作。

int frame_fps = 24;
int Wd = 1920;
int Hd = 1080;
std::string video_out_name("/path/to/save/the/video");
cv::VideoWriter VOut;
VOut.open( video_out_name, cv::VideoWriter::fourcc('X','V','I','D'),
frame_fps, cv::Size(Wd, Hd) );
if( !VOut.isOpened() )
{
CV_Error_(cv::Error::StsBadArg, ("Error opening video: %s", video_out_name.c_str()));
} cv::Mat res;
//...
VOut << res; //...
VOut.release(); //在处理完成后用release释放资源

三、写入视频时的编码格式

OpenCV VideoWriter一些常见的编码格式以及对应的CV_FOURCC的写法:

cv::VideoWriter::fourcc('P', 'I', 'M', '1') - MPEG-1
cv::VideoWriter::fourcc('M', 'J', 'P', 'G') - motion-jpeg
cv::VideoWriter::fourcc('M', 'P', '4', '2') - MPEG-4.2
cv::VideoWriter::fourcc('D', 'I', 'V', '3') - MPEG-4.3
cv::VideoWriter::fourcc('D', 'I', 'V', 'X') - MPEG-4
cv::VideoWriter::fourcc('U', '2', '6', '3') - H263
cv::VideoWriter::fourcc('I', '2', '6', '3') - H263I
cv::VideoWriter::fourcc('F', 'L', 'V', '1') - FLV1
cv::VideoWriter::fourcc('A', 'V', 'C', '1') - H264
cv::VideoWriter::fourcc('I', '4', '2', '0') - YUV

参考资料

[1] OpenCV – cv::VideoWriter::fourcc可支持的视频编码格式 https://www.stubbornhuang.com/2118/

本文作者 :phillee

发表日期 :2022年09月13日

本文链接https://i.cnblogs.com/posts/edit;postId=16688729

版权声明 :自由转载-非商用-非衍生-保持署名(创意共享3.0许可协议/CC BY-NC-SA 3.0)。转载请注明出处!

限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。

最新文章

  1. javaMd5加密
  2. 从单幅图像高质量去除运动模糊——读JiaYaJia同名英文论文总结
  3. 【BZOJ 2843】极地旅行社
  4. iOS屏幕尺寸和分辨率
  5. mysql错误:Error Code: 1175. You are using safe update mode and you tried to update a table……
  6. bootstrp-select插件使用
  7. Ninject之旅之十三:Ninject在ASP.NET MVC程序上的应用(附程序下载)
  8. 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!
  9. 简单读!Mybatis源码(一)一条select的一生
  10. HDU 1035(走迷宫 模拟)
  11. hdu4990 转移矩阵
  12. 浏览器的userAgent归纳
  13. 洛谷.1110.[ZJOI2007]报表统计(Multiset)
  14. python 将字节字符串转换成十六进制字符串
  15. java byte数组与String的相互转换
  16. 搭建RabbitMQ集群(Docker)
  17. 从Java开发者的视角解释JavaScript
  18. before(),after(),prepend(),append()等新DOM方法简介
  19. 剑指 offer set 16 数字在排序数组中出现的次数
  20. 从汇编的角度看待const与#define

热门文章

  1. UiPath循环活动For Each的介绍和使用
  2. Vue的基础语法
  3. Django【查询】 基础回顾与深入应用
  4. 基于 Rainbond 部署 DolphinScheduler 高可用集群
  5. 01 Mybatis框架添加英雄步骤
  6. 006面试题__创建String对象
  7. ajax03_跨域访问问题
  8. 常用的函数式接口Function接口和常用的函数式接口Function接口默认方法andThen
  9. 丽泽普及2022交流赛day16 社论
  10. linux history命令优化