OpenCV读写视频操作
一、读取视频流
在使用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)。转载请注明出处!
限于本人水平,如果文章和代码有表述不当之处,还请不吝赐教。
OpenCV读写视频操作的更多相关文章
- OpenCV读写视频文件解析
OpenCV读写视频文件解析 一.视频读写类 视频处理的是运动图像,而不是静止图像.视频资源可以是一个专用摄像机.网络摄像头.视频文件或图像文件序列. 在 OpenCV 中,VideoCapture ...
- OpenCV读写视频文件解析(二)
OpenCV读写视频文件解析(二) VideoCapture::set 设置视频捕获中的属性. C++:bool VideoCapture::set(int propId, double value) ...
- opencv读写视频,对感兴趣区域进行裁剪
作为小码农,本人最近想对一段视频的某个区域进行处理,因此要将该段视频区域裁剪出来,搜搜网上,发现没有痕迹,是故自己琢磨一下,左右借鉴,编了如下代码,目标得以实现,希望对你有用. #include &q ...
- opencv(3)视频操作
视频中最常用的就是从视频设备采集图片或者视频,或者读取视频文件并从中采样.所以比较重要的也是两个模块,一个是VideoCapture,用于获取相机设备并捕获图像和视频,或是从文件中捕获.还有一个Vid ...
- opencv中读写视频
1.介绍 OpenCV 读写视频之前,先介绍一下编解码器(codec) .如果是图像文件, 我们可以根据文件扩展名得知图像的格式.但是此经验并不能推广到视频文件中. 有些 OpenCV 用户会碰到奇怪 ...
- 基于opencv将视频转化为字符串Java版
基于opencv将视频转化为字符串Java版 opencv java 先上一个效果图吧 首先,弄清一下原理 我们要将视频转化为字符画,那么就需要获取画面的每一帧,也就是每一张图片,然后将图片进行转化 ...
- 如何用OpenCV跟踪鼠标操作
转载:如何用OpenCV跟踪鼠标操作 http://blog.skyoung.org/2014/05/01/how-to-track-mouse/ 在视频第一帧手动标记出目标的位置是在线视觉跟踪中最基 ...
- javaCV入门指南:调用FFmpeg原生API和JavaCV是如何封装了FFmpeg的音视频操作?
通过"javaCV入门指南:序章 "大家知道了处理音视频流媒体的前置基本知识,基本知识包含了像素格式.编解码格式.封装格式.网络协议以及一些音视频专业名词,专业名词不会赘述,自行搜 ...
- OpenCV2:第十章 视频操作
一.简介 OpenCV提供了专门操作视频的接口类VideoCapture 二.构造VideoCapture类 VideoCapture::VideoCapture() VideoCapture::Vi ...
随机推荐
- Redis入门到精通01
Redis入门到精通 目录 Redis入门到精通 一.Redis缓存框架基本介绍 1.1Redis的应用场景 二.Redis的安装方式 2.1Windows操作系统安装Redis 2.2Linux操作 ...
- linux下的nginx日志自动备份压缩--日志切割机
部署完毕nginx之后,发现自己的/var/log/nginx/*log的日志不会压缩,一直都是一个文本写日志, 时间久了,日志文件内存过于增加,将会导致在日志添加过程效率降低,延长时间. 默认安装的 ...
- 强化学习-学习笔记9 | Multi-Step-TD-Target
这篇笔记依然属于TD算法的范畴.Multi-Step-TD-Target 是对 TD算法的改进. 9. Multi-Step-TD-Target 9.1 Review Sarsa & Q-Le ...
- Python语法糖,提升编程幸福感!!!
转载请注明出处️ 作者:测试蔡坨坨 原文链接:caituotuo.top/a52bc938.html 大家好,我是测试蔡坨坨. 今天,我们来盘点一下Python中的那些语法糖. 什么是语法糖?语法糖不 ...
- ClickHouse(04)如何搭建ClickHouse集群
ClickHouse集群的搭建和部署和单机的部署是类似的,主要在于配置的不一致,如果需要了解ClickHouse单机的安装设部署,可以看看这篇文章,ClickHouse(03)ClickHouse怎么 ...
- Java学习_常见异常
JAVA常见异常 Java.io.NullPointerException null 空的,不存在的 NullPointer 空指针 空指针异常,该异常出现在我们操作某个对象的属性或方法时,如果该对象 ...
- ACWing94. 递归实现排列型枚举
题面 把 1∼n 这 n个整数排成一行后随机打乱顺序,输出所有可能的次序. 输入格式 一个整数 n. 输出格式 按照从小到大的顺序输出所有方案,每行 1 个. 首先,同一行相邻两个数用一个空格隔开. ...
- nginx反向代理缓存配置
关于nginx的反向代理缓存配置,用的最多的就是CDN公司,目前CDN公司用纯nginx做缓存的已经很少了,基本都用tnginx(阿里的).openresty:但是这两款软件都是基于nignx开发的, ...
- Go语言基础四:数组和指针
GO语言中数组和指针 数组 Go语言提供了数组类型的数据结构. 数组是同一数据类型元素的集合.这里的数据类型可以是整型.字符串等任意原始的数据类型.数组中不允许混合不同类型的元素.(当然,如果是int ...
- CS内网横向移动 模拟渗透实操 超详细
@Webkio 前言: 最近在跟朋友搞一些项目玩,所以最近没怎么更新内容接下来我将在虚拟中模拟内网多层靶场,进行内网渗透实验,超详细,适合小白.本文仅供网安学习,不可利用于未授权渗透工作中,否则后果自 ...