《OpenCV图像处理》——1.6 读取和写入视频文件

简介:

本节书摘来自华章计算机《OpenCV图像处理》一书中的第1章,第1.6节,作者:[西]葛罗瑞亚·布埃诺·加西亚(Gloria Bueno García)著,更多章节内容可以访问云栖社区“华章计算机”公众号查看

1.6 读取和写入视频文件

视频处理的是运动图像,而不是静止图像。视频资源可以是一个专用摄像机、网络摄像头、视频文件或图像文件序列。在OpenCV中,VideoCapture类和VideoWriter类为视频处理中所涉及的捕获和记录任务提供了一个易用的C++ API。
1.?recVideo示例代码
recVideo示例是一个简短的代码片段,使您可以了解如何使用一个默认摄像机作为一个捕捉设备,来抓取帧,对它们进行边缘检测,并且将新的转换视频帧作为一个文件保存。而且,创建两个窗口同时显示原始帧和处理过的帧。该示例的代码为:
screenshot
screenshot

在本示例中,应该快速浏览一下如下这些函数:
double VideoCapture::get(int propId):这个函数为一个VideoCapture对象返回指定的属性值。在videoio.hpp头文件中包含了基于DC1394(IEEE 1394数码相机规范)属性的一个完整列表。
static int VideoWriter::fourcc(char c1, char c2, char c3, char c4):这个函数把四个字符连接起来形成一个fourcc码。在示例中,MSVC代表微软视频(仅在Windows上可用)。
bool VideoWriter::isOpened():如果写入视频的对象被成功初始化,这个函数返回true。例如,使用一个不正确的编解码器会产生一个错误。
注意,在一个系统中有效的fourcc码依赖于本地安装的编解码器。
VideoCapture& VideoCapture::operator>>(Mat& image):这个函数抓取、解码并返回下一帧。这个方法和布尔函数VideoCapture::read(OutputArray image)等价。可以使用这个函数而不使用函数VideoCapture::grab(),然后使用VideoCapture::retrieve()。
VideoWriter& VideoWriter::operator<<(const Mat& image):这个函数写入下一帧。这个方法和布尔函数VideoWriter::write(const Mat& image)等价。
在本示例中,有一个读取/写入循环,可同时地获取并处理窗口事件。waitKey(1000/fps)函数调用负责执行这个任务。在这个示例中,1000/fps表示返回外部循环之前等待的毫秒数。尽管不精确,但对于录制的视频仍能获取每秒帧数的一个近似度量。
void VideoCapture::release():这个函数释放视频文件或采集设备。尽管在本示例中没有必要显式地包含,但为了说明它的使用,示例中仍包含了这个
函数。

相关文章
|
24天前
|
计算机视觉 数据格式
使用opencv在Qt控件上播放mp4文件
使用opencv在Qt控件上播放mp4文件
29 2
|
3月前
|
openCL 开发工具 C语言
OpenCV 图像处理学习手册:6~7
OpenCV 图像处理学习手册:6~7
77 0
|
3月前
|
存储 编解码 算法
OpenCV 图像处理学习手册:1~5
OpenCV 图像处理学习手册:1~5
32 0
|
2月前
|
人工智能 Linux API
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
OpenCV这么简单为啥不学——1.1、图像处理(灰度图、模糊图片、GaussianBlur函数、提取边缘、边缘膨胀、边缘细化)
46 0
|
2月前
|
机器学习/深度学习 算法 数据可视化
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-2
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
98 0
|
4月前
|
计算机视觉 Python
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
OpenCV获取视频文件的属性并动态显示实战(附Python源码)
48 0
|
2月前
|
机器学习/深度学习 Ubuntu Linux
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)-1
计算机视觉+深度学习+机器学习+opencv+目标检测跟踪+一站式学习(代码+视频+PPT)
55 1
|
3月前
|
存储 监控 开发工具
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
Baumer工业相机堡盟工业相机如何联合NEOAPI SDK和OpenCV实现相机图像转换为AVI视频格式(C++)
35 0
|
3月前
|
计算机视觉 Python 索引
【Python Opencv】图片与视频的操作
【Python Opencv】图片与视频的操作
【Python Opencv】图片与视频的操作
|
1月前
|
C++ 计算机视觉
Opencv(C++)系列学习---读取视频文件和打开摄像头
Opencv(C++)系列学习---读取视频文件和打开摄像头