OpenCV  4.10.0
开源计算机视觉
加载...
搜索...
无匹配项
OpenCV 配置选项参考

上一教程: OpenCV 安装概述
下一教程: OpenCV 环境变量参考

引言

注意
我们假设您已阅读 OpenCV 安装概述 教程,或具备 CMake 经验。

可以通过以下几种方式设置配置选项

  • 命令行:cmake -Doption=value ...
  • 初始缓存文件:cmake -C my_options.txt ...
  • 通过 GUI 交互

在此参考中,将使用常规命令行。

大多数选项均可在 OpenCV 的根 cmake 脚本中找到:opencv/CMakeLists.txt。特定模块中可以定义某些选项。

可以使用 CMake 工具打印所有可用选项

# 初始配置
cmake ../opencv
# 打印所有选项
cmake -L
# 打印带帮助消息的所有选项
cmake -LH
# 打印所有选项,包括高级选项
cmake -LA

最流行且最实用的选项以 WITH_ENABLE_BUILD_OPENCV_ 开头。

默认值会根据平台和其他选项的值而异。

常规选项

使用额外模块进行编译

OPENCV_EXTRA_MODULES_PATH 选项包含用分号分隔的目录列表,这些目录包含将添加到编译的额外模块。模块目录必须具有兼容的布局和 CMakeLists.txt,可以在 编码风格指南 中找到简要说明。

示例

# 用 opencv_contrib 中的所有模块进行编译
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv
# 用 opencv_contrib 的某个模块进行编译
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/bgsegm ../opencv
# 用两个自定义模块进行编译(在 bash 中分号必须进行转义)
cmake -DOPENCV_EXTRA_MODULES_PATH=../my_mod1\;../my_mod2 ../opencv
注意
仅支持 0 级和 1 级深度模块位置,执行以下命令会引发错误
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib ../opencv

调试编译

可以使用 CMAKE_BUILD_TYPE 选项来启用调试编译;生成的可执行文件将包含调试符号,并且大多数编译器优化都将被关闭。要在 Release 编译中启用调试符号,请开启 BUILD_WITH_DEBUG_INFO 选项。

在某些平台上(例如 Linux),必须在配置阶段设置编译类型

cmake -DCMAKE_BUILD_TYPE=Debug ../opencv
cmake --build .

在其他平台上,可以在同一个编译目录中生成不同类型的编译(例如 Visual Studio、XCode)

cmake <options> ../opencv
cmake --build . --config Debug

如果你使用 GNU libstdc++(GCC 的默认设置),可以开启 ENABLE_GNU_STL_DEBUG 选项,然后 C++ 库将在调试模式下使用,例如在访问向量元素时将检查索引范围。

可以使用 CV_DISABLE_OPTIMIZATION 选项禁用许多种类的优化

  • 一些第三方库(例如 IPP、Lapack、Eigen)
  • 显式向量化实现(通用内在函数、原始内在函数等)
  • 分派优化
  • 显式循环展开
另请参见
https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html
https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html
https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options

静态编译

BUILD_SHARED_LIBS 选项控制生成动态(.dll、.so、.dylib)还是静态(.a、.lib)库。默认值取决于目标平台,在大多数情况下它是 ON

示例

cmake -DBUILD_SHARED_LIBS=OFF ../opencv
另请参见
https://en.wikipedia.org/wiki/Static_library

ENABLE_PIC 设置 CMAKE_POSITION_INDEPENDENT_CODE 选项。它启用或禁用“位置无关代码”的生成。如果要编译动态库或准备链接到动态库中的静态库,则必须启用此选项。默认值为 ON

另请参见
https://en.wikipedia.org/wiki/Position-independent_code

生成 pkg-config 信息

OPENCV_GENERATE_PKGCONFIG 选项会启用 .pc 文件生成,及其标准的 CMake 软件包。此文件可能对那些不使用 CMake 来构建的项目有所帮助。

示例

cmake -DOPENCV_GENERATE_PKGCONFIG=ON ../opencv
注意
由于配置处理的复杂性,导致生成的 .pc 文件可能包含不完整的三方依赖性列表,且在某些配置中可能不起作用,尤其是在静态构建时。此功能自 4.x 版本起就已不再受官方支持,且已默认禁用。

构建测试、示例和应用程序

测试分为两种:准确性(opencv_test_*)和性能(opencv_perf_*)。默认情况下,测试和应用程序处于启用状态。默认情况下不会构建示例,应显式启用。

相应的 cmake 选项

cmake \
-DBUILD_TESTS=ON \
-DBUILD_PERF_TESTS=ON \
-DBUILD_EXAMPLES=ON \
-DBUILD_opencv_apps=ON \
../opencv

构建有限的模块集

每个模块都是 modules 目录的子目录。可以禁用一个模块

cmake -DBUILD_opencv_calib3d=OFF ../opencv

相反的选项是仅构建指定的模块和它们所依赖的所有模块

cmake -DBUILD_LIST=calib3d,videoio,ts ../opencv

在此示例中,我们请求了 3 个模块,而配置脚本会自动确定所有依赖项

-- OpenCV 模块
-- 待构建:calib3d core features2d flann highgui imgcodecs imgproc ts videoio

已下载的依赖项

如果配置脚本无法从 Internet 下载其他库和文件,它会尝试这样做,如果失败,相应的特征会被关闭。在某些情况下,可能会发生配置错误。默认情况下,所有文件首先下载到 <source>/.cache 目录,然后解压或复制到构建目录。可以通过设置环境变量或配置选项来更改下载缓存的位置

export OPENCV_DOWNLOAD_PATH=/tmp/opencv-cache
cmake ../opencv
# 或
cmake -DOPENCV_DOWNLOAD_PATH=/tmp/opencv-cache ../opencv

如果通过代理访问,则应在运行 cmake 之前设置相应的环境变量

export http_proxy=<proxy-host>:<port>
export https_proxy=<proxy-host>:<port>

下载过程的完整日志可以在构建目录 - CMakeDownloadLog.txt 中找到。此外,对于每个下载失败,将在构建目录的辅助脚本中添加一条命令,例如:download_with_wget.sh。用户可以按原样运行这些脚本,或根据自己的需要进行修改。

CPU 优化级别

在 x86_64 机器上,默认情况下,库将针对 SSE3 指令集级别进行编译。可以通过配置选项更改此级别

cmake -DCPU_BASELINE=AVX2 ../opencv
注意
其他平台有它们自己的指令集级别:ARM 上的 VFPV3NEON,PowerPC 上的 VSX

某些函数支持调度机制,允许为多个指令集编译它们,并在运行时选择一种指令集。在配置过程中可以更改已启用的指令集的列表

cmake -DCPU_DISPATCH=AVX,AVX2 ../opencv

要禁用调度机制,应将此选项设置为一个空值

cmake -DCPU_DISPATCH= ../opencv

可以禁用代码经过优化的部分,以便进行故障排除和调试

# 禁用通用的 intrinsic
cmake -DCV_ENABLE_INTRINSICS=OFF ../opencv
# 禁用所有可能的内置优化
cmake -DCV_DISABLE_OPTIMIZATION=ON ../opencv
注意
可以在 wiki 中找到有关 CPU 优化选项的更多详细信息:https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options

性能分析、覆盖率、消毒、强化、大小优化

可以使用以下选项生成带有工具或经过安全改进的特殊版本。所有选项在默认情况下均已禁用。

选项编译器说明
ENABLE_PROFILING GCC 或 Clang启用性能分析编译器和链接器选项。
ENABLE_COVERAGE GCC 或 Clang启用代码覆盖率支持。
OPENCV_ENABLE_MEMORY_SANITIZER 启用代码中的几个怪癖,以辅助内存消毒程序。
ENABLE_BUILD_HARDENING GCC、Clang、MSVC启用降低代码被利用可能性的编译器选项。
ENABLE_LTO GCC、Clang、MSVC启用链接时优化 (LTO)。
ENABLE_THIN_LTO Clang启用将中间位代码合并到二进制文件中的精简 LTO,允许使用者以后优化他们的应用程序。
另请参见
GCC 工具
强化版本
跨过程优化
链接时优化
精简 LTO

启用 IPP 优化

可以使用以下选项为每个函数启用 IPP 优化,但会增加 opencv 库的大小。所有选项在默认情况下均已禁用。

选项功能+ 大小(大致)
OPENCV_IPP_GAUSSIAN_BLUR GaussianBlur()+8Mb
OPENCV_IPP_MEAN mean() / meanStdDev()+0.2Mb
OPENCV_IPP_MINMAX minMaxLoc() / minMaxIdx()+0.2Mb
OPENCV_IPP_SUM sum()+0.1Mb

功能特性和依赖项

有许多可选的依赖项和功能可以打开或关闭。cmake 有一个特殊选项,允许打印所有可用的配置参数

cmake -LH ../opencv

选项命名约定

有三种选项用于控制库的依赖项,它们有不同的前缀

  • WITH_ 开头的选项启用或禁用依赖项
  • BUILD_ 开头的选项启用或禁用构建和使用与 OpenCV 捆绑在一起的第三方库
  • HAVE_ 开头的选项表示依赖项已启用,如果无法使用自动检测时,可以使用它手动启用依赖项。

WITH_ 选项已启用

  • 如果 BUILD_ 选项已启用,第三方库将被构建并启用 => HAVE_ 设为 ON
  • 如果 BUILD_ 选项已禁用,在找到目标时,第三方库将被检测并启用 => 在找到依赖项时,HAVE_ 将被设为 ON

异构计算

CUDA 支持

WITH_CUDA(默认:OFF

许多算法已使用 CUDA 加速实现,这些函数位于单独的模块中。作为前提条件,必须从官方 NVIDIA 网站安装 CUDA 工具包。对于早于 3.9 的 cmake 版本,OpenCV 使用其自己的 cmake/FindCUDA.cmake 脚本,而对于较新版本,则使用随 CMake 打包的脚本。可以使用其他选项来控制构建过程,例如 CUDA_GENERATIONCUDA_ARCH_BIN。这些参数尚未记录,有关详细信息,请查阅 cmake/OpenCVDetectCUDA.cmake 脚本。

注意
从 OpenCV 4.0 版本开始,所有 CUDA 加速算法实现均已迁移到 opencv_contrib 存储库。要同时构建 opencvopencv_contrib,请查看 使用其他模块进行构建
某些教程可以在相应部分找到:GPU 加速计算机视觉(cuda 模块)
另请参见
CUDA 加速计算机视觉
https://en.wikipedia.org/wiki/CUDA

TODO:其他选项:WITH_CUFFTWITH_CUBLASWITH_NVCUVID

OpenCL 支持

WITH_OPENCL(默认:ON

多个 OpenCL 加速算法可通过所谓的“透明 API (T-API)”获得。此集成在用户级别使用与常规 CPU 实现相同的函数。如果将输入和输出图像参数作为不透明 cv::UMat 对象传递,则切换到 OpenCL 执行分支。详情请参阅 简要介绍OpenCL 支持

此功能在构建时没有任何前提条件。在运行时,需要可正常工作的 OpenCL 运行时,请运行 clinfo 和/或 opencv_version --opencl 命令进行检查。OpenCL 集成的一些参数可以使用环境变量(例如 OPENCV_OPENCL_DEVICE)修改。但是,此功能还没有详尽的文档,因此请查看 modules/core/src/ocl.cpp 文件中的源代码,了解详细信息。

另请参见
https://en.wikipedia.org/wiki/OpenCL

TODO:其他选项:WITH_OPENCL_SVMWITH_OPENCLAMDFFTWITH_OPENCLAMDBLASWITH_OPENCL_D3D11_NVWITH_VA_INTEL

图像读取和写入(imgcodecs 模块)

内置格式

OpenCV 可以读取以下格式而无需借助任何第三方库

PNG、JPEG、TIFF、WEBP 支持

格式选项默认强制生成自己的
PNG WITH_PNG 开启 BUILD_PNG
JPEG WITH_JPEG 开启 BUILD_JPEG
TIFF WITH_TIFF 开启 BUILD_TIFF
WEBP WITH_WEBP 开启 BUILD_WEBP
JEPG2000 与 OpenJPEG WITH_OPENJPEG 开启 BUILD_OPENJPEG
JEPG2000 与 JasPer WITH_JASPER 开启(请参阅注释)BUILD_JASPER
EXR WITH_OPENEXR 开启 BUILD_OPENEXR

读取这些格式的图像需要的所有库都包含在 OpenCV 中,并且如果在配置阶段未找到,将自动构建。相应的 BUILD_* 选项将强制构建并使用我们自己的库,它们在某些平台(例如 Windows)上默认启用。

注意
OpenJPEG 具有比已弃用的 JasPer 更高的优先级。为了使用 JasPer,必须禁用 OpenJPEG。

GDAL 集成

WITH_GDAL(默认:关闭

GDAL 是一个较高级别的库,支持读取多种文件格式,包括 PNG、JPEG 和 TIFF。在打开文件时,它将具有更高的优先权,并且可以覆盖其他后端。此库将使用 cmake 包机制搜索,请确保已正确安装或手动设置 GDAL_DIR 环境或 cmake 变量。

GDCM 集成

WITH_GDCM(默认:关闭

通过 GDCM 库 启用 DICOM 医学图像格式支持。此库将使用 cmake 包机制搜索,请确保已正确安装或手动设置 GDCM_DIR 环境或 cmake 变量。

视频读取和写入(videoio 模块)

待办:videoio 如何工作、注册表、优先级

Video4Linux

WITH_V4L(Linux;默认:ON

使用 Video4Linux API 从摄像头捕获图像。必须安装 Linux 内核头文件。

FFmpeg

WITH_FFMPEG(默认:ON

FFmpeg 库集成,用于解码和编码视频文件和网络流。此库可以读取和写入许多流行的视频格式。它包含几个组件,这些组件必须作为构建的先决条件进行安装

  • avcodec
  • avformat
  • avutil
  • swscale
  • avresample(可选)

Windows 平台例外地会下载一个包含 FFmpeg 的预构建的 插件库在配置阶段里,该库将被复制到包含所有生成库的 bin 文件夹里。

注意
Libav 库可以用在 FFmpeg 代替,但该组合不活动地受支持。

GStreamer

WITH_GSTREAMER (默认:ON)

启用与 GStreamer 库集成的功能,以便解码和编码视频文件,从摄像头和网络流捕获帧。可以通过安装多个插件来扩展受支持的格式列表。OpenCV 允许以字符串形式将任意的 GStreamer 管道传递到 cv::VideoCapturecv::VideoWriter 对象中。

多个 GStreamer 插件在不同的平台上提供硬件加速视频处理功能。

Microsoft Media Foundation

WITH_MSMF (Windows;默认:ON)

启用 MSMF 后端,它使用 Windows 内置的 Media Foundation 框架。可用于从摄像头捕获帧、解码和编码视频文件。该后端具有硬件加速处理支持(WITH_MSMF_DXVA 选项,默认情况下为 ON)。

注意
较早版本的 Windows(10 之前)可能会有不兼容版本的 Media Foundation,已知从 OpenCV 中使用时会出现问题。

DirectShow

WITH_DSHOW (Windows;默认:ON)

该后端使用旧的 DirectShow 框架。它只能用于从摄像头捕获帧。该后端现在已被弃用,支持 MSMF 后端,但可以在同一个版本中同时启用这两个后端。

AVFoundation

WITH_AVFOUNDATION (Apple;默认:ON)

AVFoundation 框架是 Apple 平台的一部分,可用于从摄像头捕获帧、编码和解码视频文件。

其他后端

有几个不那么流行的框架可以用于读写视频。每个框架都需要安装相应的库或 SDK。

选项默认说明
WITH_1394 开启 IIDC IEEE1394 使用 DC1394 库提供支持(
WITH_OPENNI OFF OpenNI 可用于从深度感测摄像头捕获数据。已弃用。
WITH_OPENNI2 OFF OpenNI2 可用于从深度感测摄像头捕获数据。
WITH_PVAPI OFF PVAPI 是 Prosilica GigE 摄像头的传统 SDK。已弃用。
启用阿拉维斯 OFF 阿拉维斯 库用于使用 Genicam 相机获取视频。
启用 XIMEA OFF XIMEA 相机支持。
启用 XINE OFF XINE 库支持。
启用英特尔实感 OFF 英特尔实感 相机支持。
启用 MFX OFF MediaSDK 库可用于生视频流的硬件加速解码和编码。
启用 GPhoto2 OFF GPhoto 库可用于从相机采集帧。
启用安卓媒体 NDK 开启 MediaNDK 库自 API 级别 21 起可在安卓上使用。

videoio 插件

自版本 4.1.0 起,一些 videoio 后端可构建为插件,从而打破对第三方库的严格依赖关系,并使其在运行时变为可选。以下选项可用于控制此机制:

选项默认说明
启用视频输入输出插件 开启 启用或完全禁用插件。
视频输入输出插件列表 以逗号或分号分隔的后端名称列表,这些名称需编译为插件。支持的名称包括 ffmpeggstreamermsmfmfxall

查看 OpenCV 安装概述 以获取独立插件的构建说明。

并行处理

一些 OpenCV 算法可以使用多线程加速处理。OpenCV 可以使用一种线程后端构建。

后端选项默认平台说明
pthreads启用 PTHREADS PF 开启 类似 Unix基于 pthreads 库的默认后端可用于 Linux、Android 和其他类似 Unix 的平台。线程池在 OpenCV 中实现,可通过环境变量 OPENCV_THREAD_POOL_* 来控制。有关详细信息,请查看 modules/core/src/parallel_impl.cpp 文件中的源代码。
并发开启 Windows并发运行时 可用于 Windows,并且会在受支持的平台上启用 开启,除非启用了其他后端。
GCD开启 AppleGrand Central Dispatch 可用于 Apple 平台,并且会在启用 开启 除非启用了其他后端。使用全局系统线程池。
TBBWITH_TBB OFF 多个Threading Building Blocks 是用于并行编程的跨平台库。
OpenMPWITH_OPENMP OFF 多个OpenMP API 依赖于编译器支持。
HPXWITH_HPX OFF 多个高性能 ParallelX 是一种更适合多处理器环境的实验性后端。
注意
OpenCV 可以从 GitHub 下载并构建 TBB 库,可以使用 BUILD_TBB 选项启用此功能。

多线程插件

自 4.5.2 版本起,OpenCV 支持动态加载的多线程后端。此时仅支持独立的编译过程:首先,您必须使用某个默认并行后端(如 pthreads)构建 OpenCV,然后构建每个插件并将生成的二进制文件复制到libbin 文件夹。

选项默认说明
PARALLEL_ENABLE_PLUGINS开启启用插件支持,如果禁用此选项,OpenCV 将不会尝试加载任何内容

查看 OpenCV 安装概述 以获取独立插件的构建说明。

GUI 后端(highgui 模块)

OpenCV 依赖于各种 GUI 库来绘图。

选项默认平台说明
WITH_GTK 开启 LinuxGTK 是 Linux 和类 Unix 操作系统中一种常见的工具包。如果找到,默认情况下将使用版本 3,可以使用 WITH_GTK_2_X 选项强制使用版本 2。
WITH_WIN32UI 开启 WindowsWinAPI 是 Windows 中一种标准 GUI API。
开启 macOSCocoa 是 macOS 中使用的一个框架。
WITH_QT OFF 跨平台Qt 是一种跨平台 GUI 框架。
注意
使用 Qt 支持编译的 OpenCV 会启用高级highgui 接口,请参阅Qt 新函数了解更多详情。

OpenGL

WITH_OPENGL(默认值:OFF

OpenGL 集成可用于绘制以下后端的硬件加速窗口:GTK、WIN32 和 Qt。并且可以实现与 OpenGL 的基本互操作性,请参阅OpenGL 互操作性OpenGL 支持了解更多详情。

highgui 插件

自 OpenCV 4.5.3 起,GTK 后端可以构建为动态加载的插件。可以使用以下选项来控制此机制

选项默认说明
HIGHGUI_ENABLE_PLUGINS 开启 启用或完全禁用插件。
HIGHGUI_PLUGIN_LIST 要编译为插件的后端名称的逗号或分号分隔列表。支持的名称为gtkgtk2gtk3all

查看 OpenCV 安装概述 以获取独立插件的构建说明。

深度学习神经网络推理后端和选项(dnn 模块)

OpenCV 拥有自己的 DNN 推理模块,该模块具有自己的内置引擎,但也可以使用其他库进行优化的处理。可以在单个构建中启用多个后端。选择在运行时自动或手动进行。

选项默认说明
WITH_PROTOBUF 开启 启用protobuf 库搜索。OpenCV 可以构建自己的库副本或使用外部库。dnn 模块需要此依赖项,如果找不到,模块将被禁用。
BUILD_PROTOBUF 开启 构建protobuf的自己的副本。如果您想使用外部库,则必须禁用此选项。
PROTOBUF_UPDATE_FILES OFF 重新生成所有 .proto 文件。protoc 编译器必须与已使用的 protobuf 版本兼容且已安装。
OPENCV_DNN_OPENCL 开启 启用内置 OpenCL 推理后端。
WITH_INF_ENGINE OFF 从 OpenVINO 2022.1 起已弃用 启用 英特尔推理引擎 (IE) 后端。允许执行 IE 格式(.xml + .bin)中的网络。推理引擎必须安装为 OpenVINO 工具包 的一部分,或作为从源代码编译的独立库。
INF_ENGINE_RELEASE 2020040000 从 OpenVINO 2022.1 起已弃用 定义与 OpenVINO 工具包版本关联的推理引擎库版本。必须是 10 位数字字符串,例如用于 OpenVINO 2020.4 的 2020040000
WITH_NGRAPH OFF 从 OpenVINO 2022.1 起已弃用 启用英特尔 NGraph 库支持。此库是推理引擎后端的一部分,允许执行从以 OpenCV 支持的多格式文件读取的任意网络:Caffe、TensorFlow、PyTorch、Darknet 等。NGraph 库必须安装,已包含在推理引擎中。
WITH_OPENVINO OFF 启用英特尔 OpenVINO 工具包支持。应用于 OpenVINO> = 2022.1,而不是 WITH_INF_ENGINEWITH_NGRAPH
OPENCV_DNN_CUDA OFF 启用 CUDA 后端。必须安装 CUDA、CUBLAS 和 CUDNN
WITH_HALIDE OFF 使用实验性的 Halide 后端,它可以在运行时为 dnn 层生成优化的代码。必须安装 Halide。
WITH_VULKAN OFF 启用实验性的 Vulkan 后端。不需要额外的依赖项,但可以使用外部 Vulkan 头文件 (VULKAN_INCLUDE_DIRS)。

安装布局

安装根目录

要安装生成的二进制文件,应配置根位置。默认值取决于发行版,在 Ubuntu 中,它通常设置为 /usr/local。它可以在配置期间更改

cmake -DCMAKE_INSTALL_PREFIX=/opt/opencv ../opencv

此路径可以相对于当前工作目录,在以下示例中,它将设置为 <absolute-path-to-build>/install

cmake -DCMAKE_INSTALL_PREFIX=install ../opencv

在构建库后,可以使用以下命令将所有文件复制到配置的安装位置

cmake --build . --target install

要将二进制文件安装到系统位置(例如 /usr/local)作为普通用户,需要使用提升的权限运行前一个命令

sudo cmake --build . --target install
注意
在某些平台(Linux)上,可以在安装期间删除符号信息。二进制文件将变小 10-15%,但调试将受到限制
cmake --build . --target install/strip

组件和位置

选项可以用来控制是否安装库的一部分

选项默认说明
INSTALL_C_EXAMPLES OFF samples/cpp目录安装C++示例源
INSTALL_PYTHON_EXAMPLES OFF samples/python目录安装python示例源
INSTALL_ANDROID_EXAMPLES OFF samples/android目录安装Android示例源
INSTALL_BIN_EXAMPLES OFF 安装预建的示例的应用程序(必须启用BUILD_EXAMPLES
INSTALL_TESTS OFF 安装测试项(必须启用BUILD_TESTS
OPENCV_INSTALL_APPS_LIST all 用逗号或分号分隔要安装的预建的应用程序的列表(从apps目录)

以下选项允许修改组件的安装位置,相对于安装前缀。这些选项的默认值取决于平台和其他选项,请查看cmake/OpenCVInstallLayout.cmake文件了解详情。

选项组件
OPENCV_BIN_INSTALL_PATH 应用程序,动态库(win
OPENCV_TEST_INSTALL_PATH 测试应用程序
OPENCV_SAMPLES_BIN_INSTALL_PATH 示例应用程序
OPENCV_LIB_INSTALL_PATH 动态库,导入库(win
OPENCV_LIB_ARCHIVE_INSTALL_PATH 静态库
OPENCV_3P_LIB_INSTALL_PATH 第三方库
OPENCV_CONFIG_INSTALL_PATH cmake配置包
OPENCV_INCLUDE_INSTALL_PATH 头文件
OPENCV_OTHER_INSTALL_PATH 额外的data文件
OPENCV_SAMPLES_SRC_INSTALL_PATH 示例源
OPENCV_LICENSES_INSTALL_PATH 用于包含的第三方组件的许可证
OPENCV_TEST_DATA_INSTALL_PATH 测试数据
OPENCV_DOC_INSTALL_PATH 文档
OPENCV_JAR_INSTALL_PATH 使用Java绑定的JAR文件
OPENCV_JNI_INSTALL_PATH Java绑定的JNI部分
OPENCV_JNI_BIN_INSTALL_PATH Java绑定的JNI部分的Dynamic库

以下选项可用于更改常见情况下的安装布局

选项默认说明
INSTALL_CREATE_DISTRIB OFF 调整多项内容以生成Windows和Android发行版。
INSTALL_TO_MANGLED_PATHS OFF 将一个级别添加到多个安装位置以允许并行安装。例如,启用此选项后,将把头文件安装到_ /usr/include/opencv-4.4.0_而不是_/usr/include/opencv4_

其他功能

选项默认说明
OPENCV_ENABLE_NONFREE OFF 已知库中包含的一些算法受专利保护,并且默认情况下已禁用。
OPENCV_FORCE_3RDPARTY_BUILD OFF 一次启用所有BUILD_选项。
OPENCV_IPP_ENABLE_ALL OFF 一次启用所有OPENCV_IPP_选项。
ENABLE_CCACHE ON(在类似Unix的平台上)启用ccache自动检测。此工具封装编译器调用并缓存结果,可以显着提高重新编译时间。
ENABLE_PRECOMPILED_HEADERS ON(适用于MSVC)启用预编译头支持。缩短编译时间。
BUILD_DOCS OFF 启用文档构建(doxygendoxygen_cppdoxygen_pythondoxygen_javadoc 目标)。对于 C++ 文档,必须安装 Doxygen。对于 Python 文档,必须安装 Python 和 BeautifulSoup4。对于 Java 文档,必须安装 Javadoc 和 Ant(Java SDK 的一部分)。
ENABLE_PYLINT ON(启用文档或示例时)启用运用 Pylint 来检查 Python 脚本(check_pylint 目标)。必须安装 Pylint。
ENABLE_FLAKE8 ON(启用文档或示例时)启用运用 Flake8 来检查 Python 脚本(check_flake8 目标)。必须安装 Flake8。
BUILD_JAVA 开启 启用 Java 封装构建。必须安装 Java SDK 和 Ant。
BUILD_FAT_JAVA_LIB ON(用于静态的 Android 构建)构建单个 opencv_java 动态库,包含与 Java 绑定捆绑在一起的所有库功能。
BUILD_opencv_python2 开启 构建 python2 绑定(已弃用)。必须安装具有开发文件和 numpy 的 Python。
BUILD_opencv_python3 开启 构建 python3 绑定。必须安装具有开发文件和 numpy 的 Python。
CAROTENE_NEON_ARCH '(auto)'为胡萝卜素转换 NEON Arch。如果没有设置,它将被自动检测到。如果它设置为 8,则使用 ARMv8(及更高版本)。否则,使用 ARMv7。

TODO: 需要独立的教程来介绍绑定构建

自动化构建

一些功能是专门为自动化构建环境(如持续集成和打包系统)添加的。

选项默认说明
ENABLE_NOISY_WARNINGS OFF 启用一些编译器警告,这些警告被认为是过多的,即比其他警告的重要性低。这些警告通常会被忽略,但有时可能是值得检查的。
OPENCV_WARNINGS_ARE_ERRORS OFF 将编译器警告视为错误。构建将被停止。
ENABLE_CONFIG_VERIFICATION OFF 对于每个启用的依赖项 (WITH_ 选项)验证其是否已被找到并启用 (HAVE_ 变量)。默认情况下,如果找不到依赖项,该功能将被静默关闭,但启用此选项后,cmake 配置会失败。对于需要稳定的库配置且不依赖于环境波动的打包系统而言,它很方便。
OPENCV_CMAKE_HOOKS_DIR OpenCV 允许通过在每个阶段和子阶段添加自定义挂钩脚本来自定义配置过程。位于此变量设置的目录中的具有预定义名称的 cmake 脚本将在各种配置阶段之前和之后包含在内。文件名示例:CMAKE_INIT.cmakePRE_CMAKE_BOOTSTRAP.cmakePOST_CMAKE_BOOTSTRAP.cmake 等。其他名称未记录在案,可通过搜索 ocv_cmake_hook 宏调用在项目 cmake 文件中找到这些名称。
OPENCV_DUMP_HOOKS_FLOW OFF 在每次调用 cmake 挂钩脚本时启用调试消息打印。

Contrib 模块

opencv_contrib 中使用以下构建选项,如前所 ,可通过设置 DOPENCV_EXTRA_MODULES_PATH 选项将这些额外模块添加到您的最终产品中。

选项默认说明
WITH_CLP OFF 将添加 coinor 线性规划库构建支持,这是 videostab 模块中必需的。请确保安装 coinor-clp 的开发库。

无法记录的其他选项

BUILD_ANDROID_PROJECTS BUILD_ANDROID_EXAMPLES ANDROID_HOME ANDROID_SDK ANDROID_NDK ANDROID_SDK_ROOT

CMAKE_TOOLCHAIN_FILE

WITH_CAROTENE WITH_KLEIDICV WITH_CPUFEATURES WITH_EIGEN WITH_OPENVX WITH_DIRECTX WITH_VA WITH_LAPACK WITH_QUIRC BUILD_ZLIB BUILD_ITT WITH_IPP BUILD_IPP_IW