有许多可选的依赖项和功能可以打开或关闭。 CMake 具有特殊选项,允许打印所有可用的配置参数:
cmake -LH ../opencv
选项命名约定
有三种选项用于控制库的依赖项,它们具有不同的前缀:
-
以启用或禁用依赖项开头的选项
WITH_
-
从启用或禁用构建和使用与 OpenCV 捆绑在一起的第三方库开始的选项
BUILD_
-
以 开头的选项表示已启用依赖项,如果无法使用自动检测,则可用于手动启用依赖项。
HAVE_
启用选项时:WITH_
-
如果启用选项,将构建并启用第三方库 => 设置为
BUILD_``HAVE_``ON
-
如果禁用选项,则将检测到并启用第三方库(如果找到 => 设置为“如果找到依赖项”
BUILD_``HAVE_``ON
异构计算
CUDA 支持
WITH_CUDA
(默认:OFF)
许多算法已经使用 CUDA 加速实现,这些函数位于单独的模块中。CUDA 工具包必须从官方 NVIDIA 站点安装,作为先决条件。对于早于 3.9 的 cmake 版本,OpenCV 使用自己的脚本,对于较新的版本 - 与 CMake 打包的脚本。其他选项可用于控制构建过程,例如 或。这些参数尚未记录,详情请查阅脚本。cmake/FindCUDA.cmake``CUDA_GENERATION``CUDA_ARCH_BIN``cmake/OpenCVDetectCUDA.cmake
-
注意
从 OpenCV 4.0 版开始,所有 CUDA 加速算法实现都已移至 opencv_contrib 存储库。要同时构建 opencv 和 opencv_contrib,请选中使用额外模块构建。
可以在相应的部分找到一些教程: GPU 加速计算机视觉(cuda 模块)
-
另请参阅
CUDA 加速计算机视觉
https://en.wikipedia.org/wiki/CUDA
TODO:其他选项:、、?WITH_CUFFT``WITH_CUBLAS``WITH_NVCUVID
OpenCL 支持
WITH_OPENCL
(默认值:ON)
多种 OpenCL 加速算法可通过所谓的“透明 API (T-API)”获得。此集成在用户级别使用与常规 CPU 实现相同的功能。如果输入和输出图像参数作为不透明的 cv::UMat 对象传递,则切换到 OpenCL 执行分支。更多信息可以在简要介绍和 OpenCL 支持中找到
在生成时,此功能没有任何先决条件。在运行时,需要一个有效的 OpenCL 运行时,以检查它的运行和/或命令。OpenCL 集成的某些参数可以使用环境变量进行修改,例如 .但是,目前还没有关于此功能的完整文档,因此请查看文件中的源代码以获取详细信息。clinfo``opencv_version --opencl``OPENCV_OPENCL_DEVICE``modules/core/src/ocl.cpp
-
另请参阅
https://en.wikipedia.org/wiki/OpenCL
TODO:其他选项:、、、、WITH_OPENCL_SVM``WITH_OPENCLAMDFFT``WITH_OPENCLAMDBLAS``WITH_OPENCL_D3D11_NV``WITH_VA_INTEL
图像读写(imgcodecs 模块)
内置格式
OpenCV 可以在没有任何第三方库帮助的情况下读取以下格式:
-
BMP的
-
高动态范围 (
WITH_IMGCODEC_HDR
) -
太阳栅格 (
WITH_IMGCODEC_SUNRASTER
) -
PPM、PGM、PBM、PFM(、
WITH_IMGCODEC_PXM``WITH_IMGCODEC_PFM
)
PNG、JPEG、TIFF、WEBP 支持
格式 | 选择 | 违约 | 强制构建自己 |
---|---|---|---|
巴布亚新几内亚 | WITH_PNG | 上 | BUILD_PNG |
JPEG格式 | WITH_JPEG | 上 | BUILD_JPEG |
TIFF格式 | WITH_TIFF | 上 | BUILD_TIFF |
网络 | WITH_WEBP | 上 | BUILD_WEBP |
使用 OpenJPEG 进行JPEG2000 | WITH_OPENJPEG | 上 | BUILD_OPENJPEG |
与 JasPer JPEG2000 | WITH_JASPER | 开(见注释) | BUILD_JASPER |
EXR的 | WITH_OPENEXR | 上 | BUILD_OPENEXR |
读取这些格式的图像所需的所有库都包含在 OpenCV 中,如果在配置阶段找不到,将自动构建。相应的选项将强制构建和使用自己的库,它们在某些平台上默认启用,例如 Windows。BUILD_*
-
注意
OpenJPEG 的优先级高于已弃用的 JasPer。为了使用 JasPer,必须禁用 OpenJPEG。
GDAL集成
WITH_GDAL
(默认:OFF)
GDAL 是一个更高级别的库,支持读取多种文件格式,包括 PNG、JPEG 和 TIFF。打开文件时,它将具有更高的优先级,并且可以覆盖其他后端。该库将使用 cmake 包机制进行搜索,确保安装正确或手动设置环境或 cmake 变量。GDAL_DIR
GDCM集成
WITH_GDCM
(默认:OFF)
通过 GDCM 库启用 DICOM 医学图像格式支持。该库将使用 cmake 包机制进行搜索,确保安装正确或手动设置环境或 cmake 变量。GDCM_DIR
视频读写(videoio模块)
TODO:videoio的工作原理,注册表,优先级
Video4Linux的
WITH_V4L
(Linux;默认值:ON )
使用 Video4Linux API 从相机捕获图像。必须安装 Linux 内核头文件。
FFmpeg的
WITH_FFMPEG
(默认值:ON)
与 FFmpeg 库集成,用于解码和编码视频文件和网络流。该库可以读取和写入许多流行的视频格式。它由几个组件组成,这些组件必须作为构建的先决条件进行安装:
-
AVCODEC解码器
-
AVVonfig
-
阿武蒂尔
-
斯瓦斯卡
-
avresample(可选)
例外情况是 Windows 平台,其中包含 FFmpeg 的预构建插件库将在配置阶段下载并复制到包含所有生成库的文件夹中。bin
-
注意
可以使用 Libav 库代替 FFmpeg,但这种组合不受积极支持。
GStreamer(GS特雷默)
WITH_GSTREAMER
(默认值:ON)
实现与 GStreamer 库的集成,用于解码和编码视频文件,从摄像机和网络流中捕获帧。可以安装许多插件来扩展支持的格式列表。OpenCV 允许运行任意 GStreamer 管道,这些管道作为字符串传递给 cv::VideoCapture 和 cv::VideoWriter 对象。
各种 GStreamer 插件在不同平台上提供硬件加速的视频处理。
Microsoft 媒体基金会
WITH_MSMF
(Windows;默认值:ON)
启用使用 Windows 内置媒体基础框架的 MSMF 后端。可用于从相机捕获帧,解码和编码视频文件。此后端具有硬件加速处理支持(选项,默认为 ON)。WITH_MSMF_DXVA
-
注意
旧版本的 Windows(10 之前的版本)可能具有不兼容的 Media Foundation 版本,并且已知从 OpenCV 使用时会出现问题。
DirectShow(直接显示)
WITH_DSHOW
(Windows;默认值:ON)
此后端使用较旧的DirectShow框架。它只能用于从相机捕获帧。它现在已被弃用,取而代之的是 MSMF 后端,尽管两者都可以在同一版本中启用。
AV发布
WITH_AVFOUNDATION
(Apple;默认值:ON)
AVFoundation 框架是 Apple 平台的一部分,可用于从相机捕获帧、编码和解码视频文件。
其他后端
有多个不太流行的框架可用于读取和写入视频。每个都需要安装相应的库或 SDK。
选择 | 违约 | 描述 |
---|---|---|
WITH_1394 | 上 | 使用 DC1394 库的 IIDC IEEE1394支持 |
WITH_OPENNI | 关闭 | OpenNI 可用于 从 深度 感应 相机 采集 数据。荒废的。 |
WITH_OPENNI2 | 关闭 | OpenNI2 可用于从深度感应相机捕获数据。 |
WITH_PVAPI | 关闭 | PVAPI 是用于 Prosilica GigE 相机的旧版 SDK。荒废的。 |
WITH_ARAVIS | 关闭 | Aravis 库用于使用 Genicam 相机进行视频采集。 |
WITH_XIMEA | 关闭 | XIMEA 相机支持。 |
WITH_XINE | 关闭 | XINE 库支持。 |
WITH_LIBREALSENSE | 关闭 | RealSense 摄像头支持。 |
WITH_MFX | 关闭 | MediaSDK 库可用于原始视频流的硬件加速解码和编码。 |
WITH_GPHOTO2 | 关闭 | GPhoto 库可用于从相机获取帧。 |
WITH_ANDROID_MEDIANDK | 上 | MediaNDK 库自 API 级别 21 起在 Android 上可用。 |
VideoIO插件
从 4.1.0 版本开始,一些 videoio 后端可以构建为插件,从而打破了对第三方库的严格依赖,并在运行时使它们成为可选的。可以使用以下选项来控制此机制:
选择 | 违约 | 描述 |
---|---|---|
VIDEOIO_ENABLE_PLUGINS | 上 | 完全启用或禁用插件。 |
VIDEOIO_PLUGIN_LIST | 空 | 以逗号或分号分隔的要编译为插件的后端名称列表。支持的名称包括 ffmpeg、gstreamer、msmf、mfx 和 all。 |
在线教程
- 麻省理工学院人工智能视频教程 – 麻省理工人工智能课程
- 人工智能入门 – 人工智能基础学习。Peter Norvig举办的课程
- EdX 人工智能 – 此课程讲授人工智能计算机系统设计的基本概念和技术。
- 人工智能中的计划 – 计划是人工智能系统的基础部分之一。在这个课程中,你将会学习到让机器人执行一系列动作所需要的基本算法。
- 机器人人工智能 – 这个课程将会教授你实现人工智能的基本方法,包括:概率推算,计划和搜索,本地化,跟踪和控制,全部都是围绕有关机器人设计。
- 机器学习 – 有指导和无指导情况下的基本机器学习算法
- 机器学习中的神经网络 – 智能神经网络上的算法和实践经验
- 斯坦福统计学习
人工智能书籍
- OpenCV(中文版).(布拉德斯基等)
- OpenCV+3计算机视觉++Python语言实现+第二版
- OpenCV3编程入门 毛星云编著
- 数字图像处理_第三版
- 人工智能:一种现代的方法
- 深度学习面试宝典
- 深度学习之PyTorch物体检测实战
- 吴恩达DeepLearning.ai中文版笔记
- 计算机视觉中的多视图几何
- PyTorch-官方推荐教程-英文版
- 《神经网络与深度学习》(邱锡鹏-20191121)
- …
第一阶段:零基础入门(3-6个月)
新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。
第二阶段:基础进阶(3-6个月)
熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。
第三阶段:工作应用
这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。