OpenCV 4.10.0
开放源码计算机视觉
|
OpenCV 视频输入/输出模块是一组用于读取和写入视频或图像序列的类和函数。
从根本上来说,该模块作为两层接口向许多用作后端视频输入/输出 API 提供 cv::VideoCapture 和 cv::VideoWriter 类。
某些后端(例如 Direct Show (DSHOW)、Microsoft Media Foundation (MSMF)、Video 4 Linux (V4L) 等)是操作系统提供的视频输入/输出库的接口。
某些其他后端(例如用于 Kinect 的 OpenNI2、英特尔感知计算 SDK、GStreamer、XIMEA Camera API 等)是专有驱动程序或外部库的接口。
在此处查看支持的后端列表:cv::VideoCaptureAPIs
OpenCV 会自动选择并使用第一个可用后端(apiPreference=cv::CAP_ANY
)。
作为高级用法,您可以在运行时选择要使用的后端。
例如,使用 Microsoft Media Foundation (MSMF) 作为后端,从默认摄像头拍摄视频
如果您想使用 Microsoft Media Foundation (MSMF) 作为后端从文件中采集
有两种视频 I/O 后端:运行时将会加载的内置后端和插件(从 OpenCV 4.1.0 开始)。使用函数 cv::videoio_registry::getBackends、cv::videoio_registry::hasBackend 和 cv::videoio_registry::getBackendName 在运行时检查后端的实际存在。
启用内置 videoio 后端
-DWITH_GSTREAMER=ON
启用动态加载的 videoio 后端(当前支持:Linux 上的 GStreamer 和 FFmpeg,Linux 和 Windows 上的 MediaSDK)
-DWITH_GSTREAMER=ON -DVIDEOIO_PLUGIN_LIST=gstreamer
CMake 选项libopencv_videoio_gstreamer.so
库是否存在于 lib
目录中许多工业摄像头或一些视频 I/O 设备未为操作系统提供标准驱动程序接口。因此,您无法对这些设备使用 VideoCapture 或 VideoWriter。
要访问自己的设备,制造商提供自己的 C++ API 和库,您必须将其包含在 OpenCV 应用程序中并进行链接。
通常,这些库会读/写到内存缓冲区的图像。如果是这样,则可以为内存缓冲区(用户分配的数据)设置 Mat
头部并在就地使用 OpenCV 函数对其进行处理。有关更多详细信息,请参阅 cv::Mat::Mat()。
OpenCV 可以使用 FFmpeg 库(http://ffmpeg.org/)作为后端来录制、转换和流式传输音频和视频。FFmpeg 是一款完备的交叉库解决方案。如果在配置 OpenCV 时启用了 FFmpeg,那么 CMake 将在 OPENCV_SOURCE_CODE/3rdparty/ffmpeg/
中下载和安装二进制文件。要在运行时使用 FFmpeg,必须使用应用程序部署 FFmpeg 二进制文件。
OPENCV_SOURCE_CODE/3rdparty/ffmpeg/readme.txt
和 http://ffmpeg.org/legal.html 了解详细信息和授权信息