OpenCV读写视频操作
2024-09-07 10:40:31
一、读取视频流
在使用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)。转载请注明出处!
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
最新文章
- javaMd5加密
- 从单幅图像高质量去除运动模糊——读JiaYaJia同名英文论文总结
- 【BZOJ 2843】极地旅行社
- iOS屏幕尺寸和分辨率
- mysql错误:Error Code: 1175. You are using safe update mode and you tried to update a table……
- bootstrp-select插件使用
- Ninject之旅之十三:Ninject在ASP.NET MVC程序上的应用(附程序下载)
- 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!
- 简单读!Mybatis源码(一)一条select的一生
- HDU 1035(走迷宫 模拟)
- hdu4990 转移矩阵
- 浏览器的userAgent归纳
- 洛谷.1110.[ZJOI2007]报表统计(Multiset)
- python 将字节字符串转换成十六进制字符串
- java byte数组与String的相互转换
- 搭建RabbitMQ集群(Docker)
- 从Java开发者的视角解释JavaScript
- before(),after(),prepend(),append()等新DOM方法简介
- 剑指 offer set 16 数字在排序数组中出现的次数
- 从汇编的角度看待const与#define