OpenCV 视频输入/输出概述 OpenCV v4.8.0

另请参见

概况

OpenCV 视频 I/O 模块是一组用于读写视频或图像序列的类和函数。

基本上,该模块提供了 cv::VideoCapturecv::VideoWriter 类作为许多视频 I/O API 的 2 层接口,用作后端。
在这里插入图片描述

在这里插入图片描述

一些后端,如 Direct Show (DSHOW)、Microsoft Media Foundation (MSMF)、Video 4 Linux (V4L) 等,是操作系统提供的视频 I/O 库接口。

其他一些后端,如用于 Kinect 的 OpenNI2、Intel Perceptual Computing SDK、GStreamer、XIMEA Camera API 等,则是专有驱动程序或外部库的接口。

点击此处查看支持的后端列表:cv::VideoCaptureAPIs

警告
某些后端是试验性的,请自行承担使用风险

注意事项
每个后端支持设备属性(cv::VideoCaptureProperties)的方式不同,也可能完全不支持任何属性。

运行时选择后端

OpenCV 会自动选择并使用第一个可用的后端(apiPreference=cv::CAP_ANY)。

作为高级用法,您可以在运行时选择要使用的后端。

例如,使用 Microsoft Media Foundation (MSMF) 作为后端从默认摄像机抓取数据

//声明捕获对象
cv::VideoCapture cap(0, cv::CAP_MSMF)//或使用 open 指定 apiPreference
cap.open(0, cv::CAP_MSMF)

如果要使用 Microsoft Media Foundation (MSMF) 作为后端从文件中抓取:

//声明捕获对象
cv::VideoCapture cap(filename, cv::CAP_MSMF)//或使用 open 指定 apiPreference
cap.open(filename, cv::CAP_MSMF)

另请参见

cv::VideoCapture::open() , cv::VideoCapture::VideoCapture()

如何启用后端

videoio 后端有两种:内置后端和运行时加载的插件(自 OpenCV 4.1.0 起)。使用函数 cv::videoio_registry::getBackendscv::videoio_registry::hasBackendcv::videoio_registry::getBackendName 可在运行时检查后端是否实际存在。

启用内置 videoio 后端:

  1. 启用相应的 CMake 选项,例如 -DWITH_GSTREAMER=ON
  2. 重建 OpenCV

要启用动态加载的视频后端(目前支持 Linux 上的 GStreamer 和 FFmpeg,Linux 和 Windows 上的 MediaSDK):

  1. 启用后端并将其添加到插件列表中: -DWITH_GSTREAMER=ON -DVIDEOIO_PLUGIN_LIST=gstreamer CMake 选项
  2. 重建 OpenCV
  3. 检查 lib 目录中是否存在 libopencv_videoio_gstreamer.so

注意事项
在这两种模式之间切换时不要忘记清理 CMake 缓存

使用第三方驱动程序或摄像机

许多工业相机或某些视频 I/O 设备不为操作系统提供标准驱动程序接口。因此,您无法在这些设备上使用 VideoCapture 或 VideoWriter。

为了访问这些设备,制造商提供了自己的 C++ API 和库,您必须将其包含并链接到 OpenCV 应用程序中。

通常情况下,这些库会从内存缓冲区读/写图像。如果是这样,可以为内存缓冲区(用户分配的数据)创建 Mat 头文件,并使用 OpenCV 函数就地处理。详情请参见 cv::Mat::Mat()

FFmpeg 库

OpenCV 可以使用 FFmpeg 库 (http://ffmpeg.org/) 作为后端来录制、转换和流式传输音频和视频。FFmpeg 是一个完整的交叉引用解决方案。如果在配置 OpenCV 时启用 FFmpeg,CMake 将下载并安装 OPENCV_SOURCE_CODE/3rdparty/ffmpeg/ 中的二进制文件。要在运行时使用 FFmpeg,必须将 FFmpeg 二进制文件与应用程序一起部署。

注意事项
FFmpeg 采用 GNU 宽通用公共许可证 (LGPL) 2.1 或更高版本。有关详细信息和许可信息,请参阅
OPENCV_SOURCE_CODE/3rdparty/ffmpeg/readme.txt
http://ffmpeg.org/legal.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值