OpenCV 配置选项参考文档

本文详细介绍了OpenCV的配置选项,包括通用选项、功能特性与依赖项相关设置,如构建类型、静态库、调试选项、并行处理、GUI后端等。还涉及了异构计算支持,如CUDA和OpenCL,以及图像和视频读写的模块配置。此外,文中还提到了自动化构建、 Contrib模块的构建选项,并提供了配置过程中的一些提示和注意事项。
摘要由CSDN通过智能技术生成

本文参考官方文档 OpenCV configuration options reference,更新的内容请参考此文档。

由于博主水平有限,且刚接触 OpenCV,翻译有不通顺、错误的地方,请大佬们指正。本文会龟速长期纠正更新。

介绍

💡 NOTE: 本文假设您已阅读 OpenCV installation overview 教程或具有 CMake 的操作经验。

可以通过几种不同的方式设置配置选项:

  • 命令行:cmake -Doption=value ...
  • 初始缓存文件: cmake -C my_options.txt ...
  • 通过图形用户界面(GUI,cmake-gui)进行交互操作

本文中将使用常规命令行。

大部分选项都可以在 OpenCV 的根 CMake 脚本中找到:opencv/CMakeLists.txt。 一些选项可能在特定的模块中被定义。

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

# initial configuration
cmake ../opencv
# print all options
cmake -L
# print all options with help message
cmake -LH
# print all options including advanced
cmake -LA

最流行最有用的选项是以 WITH_, ENABLE_, BUILD_, OPENCV_ 为前缀的那些。

选项的默认值因平台和其他选项值而异。

通用选项

和附加模块一起构建

  • OPENCV_EXTRA_MODULES_PATH 选项的值应为一个用分号分隔的目录列表,这些目录包含你要一起构建的那些附加模块。模块目录必须有兼容的布局和 CMakeLists.txt,简要说明可以在 Coding Style Guide 中找到。

示例:

# build with all modules in opencv_contrib
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv
# build with one of opencv_contrib modules
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/bgsegm ../opencv
# build with two custom modules (semicolon must be escaped in bash)
cmake -DOPENCV_EXTRA_MODULES_PATH=../my_mod1\;../my_mod2 ../opencv

💡 NOTE: 仅支持 0 级和 1 级深度模块位置,下面的命令会引发错误:
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib ../opencv

调试(Debug)构建

CMAKE_BUILD_TYPE 选项可用于启用调试构建;生成的二进制文件将包含调试符号,并且大多数编译器优化将被关闭。

要在发布(Release)版本中启用调试符号,请开启 BUILD_WITH_DEBUG_INFO 选项。

在某些平台(操作系统)例如 Linux 上,必须在配置阶段设置构建类型(BUILD_TYPE):

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++ 库可以在调试模式下使用,例如:访问 vector 元素时将检查索引边界。

可以使用 CV_DISABLE_OPTIMIZATION 选项禁用许多优化:

  • 一些第三方库(例如 IPP、Lapack、Eigen)
  • Explicit vectorized implementation (universal intrinsics, raw intrinsics, etc.)
  • 调度优化
  • 显式循环展开

也可以参考:

静态构建

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

示例:

cmake -DBUILD_SHARED_LIBS=OFF ../opencv

也可以参考:Wikipedia: Static library

ENABLE_PIC 设置 CMAKE_POSITION_INDEPENDENT_CODE 选项。 它启用或禁用“位置无关代码(PIC)”的生成。 构建动态库或打算链接到动态库的静态库时,必须启用此选项。 默认值为 ON

也可以参考:Wikipedia: Position-independent_code

生成 pkg-config 信息

OPENCV_GENERATE_PKGCONFIG 选项启用带标准 CMake 包的 .pc 文件生成。该文件对于不使用 CMake 进行构建的项目很有用。

示例:

cmake -DOPENCV_GENERATE_PKGCONFIG=ON ../opencv

💡 NOTE: 由于配置过程的复杂性,导致 .pc 文件可能包含不完整的第三方依赖项列表,并且可能在某些配置中不起作用,尤其是对于静态构建。 此功能自 OpenCV 4.x 版本起不再正式支持,默认禁用(disable)。

构建测试、示例和应用

有两种测试:准确性 accuracy (opencv_test_*) 和性能 performance (opencv_perf_*)。默认情况下启用测试和应用,而不构建示例,你需要显式(手动)启用它。

相应的 CMake 选项:

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

只构建部分模块

OpenCV 每个模块都是源代码目录中 module 目录的子目录。 可以使用以下选项来禁用一个模块:

cmake -DBUILD_opencv_calib3d=OFF ../opencv

另一个相反功能的选项只构建指定的模块和它们依赖的所有模块:

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

在这个例子中,我们请求了 3 个模块,并且配置脚本已自动确定所有依赖项:

--   OpenCV modules:
--     To be built:                 calib3d core features2d flann highgui imgcodecs imgproc ts videoio

下载的依赖项

配置脚本可以尝试从网络上下载附加的库和文件,如果失败,相应的功能将被关闭。在某些情况下,可能会发生配置错误。默认情况下,所有文件先被下载到 <source>/.cache 目录,然后被解压缩或复制到构建目录。可以通过设置环境变量或配置选项来更改下载缓存的位置:

export OPENCV_DOWNLOAD_PATH=/tmp/opencv-cache
cmake ../opencv
# or
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

💡 NOTE: 其他平台有自己的指令集级别:ARM 上的 VFPV3NEON,PowerPC 上的 VSX

一些函数支持分派机制,允许为多个指令集进行编译并在运行时在其中选择一个。 可以在配置期间更改启用的指令集列表:

cmake -DCPU_DISPATCH=AVX,AVX2 ../opencv

要禁用分派机制,此选项值应设置为空:

cmake -DCPU_DISPATCH= ../opencv

可以使用以下选项禁用优化部分代码以便进行故障排除和调试:

# disable universal intrinsics
cmake -DCV_ENABLE_INTRINSICS=OFF ../opencv
# disable all possible built-in optimizations
cmake -DCV_DISABLE_OPTIMIZATION=ON ../opencv

💡 NOTE: 关于 CPU 优化选项的更多细节可以在 OpenCV wiki: CPU optimizations build options 上找到

性能分析、代码覆盖率、清理、强化、size optimization

性能分析(Profiling)代码覆盖率(Coverage)、清理(Sanitize)、强化(Hardening)、size optimization

以下选项可用于生成带有检测或改进安全性的特殊构建,默认情况下它们都被禁用。

选项编译器说明
ENABLE_PROFILINGGCC 或 Clang启用编译器和链接器的性能分析选项。
ENABLE_COVERAGEGCC 或 Clang启用对代码覆盖率的支持。
OPENCV_ENABLE_MEMORY_SANITIZER不适用在代码中启用几个 quirks 以协助内存清理器。
ENABLE_BUILD_HARDENINGGCC、Clang、MSVC启用减少代码开发可能性的编译器选项。
ENABLE_LTOGCC、Clang、MSVC启用链接时间优化 (LTO)。
ENABLE_THIN_LTOClang启用 Thin LTO,它将中间代码合并到二进制文件中,允许稍后优化应用程序。

也可以参考:

功能特性与依赖项相关

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

cmake -LH ../opencv

选项命名规范

用于控制依赖库的选项有三种,分别有不同的前缀:

  • WITH_:是否启用(enable or disable)此依赖
  • BUILD_:是否启用与 OpenCV 捆绑的第三方库的构建与使用
  • HAVE_:表明此依赖是否被启用,当自动检测无法使用时,可以用于手动启用一个依赖

当一个 WITH_ 选项被 启用 时,有:

  • 如果 相应的 BUILD_ 选项也被启用,第三方库被构建并启用 => 相应的 HAVE_ 选项值会被设置为 ON
  • 如果相应的 BUILD_ 选项被禁用,会检测第三方库,如果第三方库被找到则被启用 => 如果找到了依赖则相应的 HAVE_ 选项值会被设置为 ON

异构计算

对 CUDA 的支持

WITH_CUDA (默认值:OFF

OpenCV 的许多算法用 CUDA 加速实现,这些函数在单独的模块中。需要预先安装 CUDA toolkit。必须先从 NVIDIA 官网安装 CUDA toolkit。 对于低于 3.9 的 CMake 版本,OpenCV 使用自己的 cmake/FindCUDA.cmake 脚本,而对于较新的 CMake 版本,OpenCV 使用与 CMake 一起打包的版本。 附加选项可用于控制构建过程,例如 CUDA_GENERATIONCUDA_ARCH_BIN。 这些参数尚未写入文档,请查阅 cmake/OpenCVDetectCUDA.cmake 脚本了解详细信息。

💡 NOTE: 从 OpenCV 4.0 版本开始所有的 CUDA 加速算法被移动到了 opencv_contrib 仓库(OpenCV Contrib) 中。要一起构建 opencv 和 opencv_contrib,请参考上一节的 和附加模块一起构建 小节。
一些教程可以在相应的部分找到:GPU-Accelerated Computer Vision (cuda module)

也可以参考:

TODO: 其他选项: WITH_CUFFT, WITH_CUBLAS, WITH_NVCUVID

对 OpenCL 的支持

WITH_OPENCL(默认值:ON

许多使用 OpenCL 加速的算法可以通过所谓的 “Transparent API (T-API)” 来访问。此集成使用了在用户级上与常规 CPU 实现相同的函数。当输入和输出的图形参数被作为不透明的 cv::UMat 对象传递时会切换到 OpenCL 分支执行。需要了解更多的信息可以参考 The Brief IntroductionOpenCL support

在构建时,此功能不需要任何先决条件。运行时需要一个 OpenCL runtime,你可以使用 clinfo 和/或 opencv_version --opencl 命令来检查它是否存在。OpenCL 集成的一些参数可以使用环境变量进行修改,例如 OPENCV_OPENCL_DEVICE。但目前还没有关于此功能的完整文档,因此要获取详细信息请查看 modules/core/src/ocl.cpp 文件中的源代码。

也可以参考:Wikipedia: OpenCL

TODO:其他选项:WITH_OPENCL_SVMWITH_OPENCLAMDFFTWITH_OPENCLAMDBLASWITH_OPENCL_D3D11_NVWITH_VA_INTEL

图像的读写(imgcodecs 模块)

内置格式

下面这些格式可以直接被 OpenCV 读取而不需要任何第三方库的帮助:

对 PNG, JPEG, TIFF, WEBP 的支持
格式编译选项默认值强制构建自身
PNGWITH_PNGONBUILD_PNG
JPEGWITH_JPEGONBUILD_JPEG
TIFFWITH_TIFFONBUILD_TIFF
WEBPWITH_WEBPONBUILD_WEBP
JPEG2000 with OpenJPEGWITH_OPENJPEGONBUILD_OPENJPEG
JPEG2000 with JasPerWITH_JASPERON(请参考 NOTEBUILD_JASPER
EXRWITH_OPENEXRONBUILD_OPENEXR

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

💡 NOTE: OpenJPEG 的优先级高于已弃用的 JasPer。 要使用 JasPer,必须禁用 OpenJPEG。

GDAL 集成

WITH_GDAL (默认值:OFF

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

GDCM 集成

WITH_GDCM (默认值:OFF

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

视频的读写(videoio 模块)

TODO:videoio 的工作原理、注册表、优先级

Video4Linux

WITH_V4L (Linux;默认值:ON

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

FFmpeg

WITH_FFMPEG (默认值:ON

FFmpeg 库集成,用于解码和编码视频文件和网络流。 这个库可以读写许多流行的视频格式。由几个组件组成,它们需要提前安装:

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

除了 Windows 平台:一个预构建的 包含 FFmpeg 的插件库 将在配置阶段被下载并与所有生成的库一起被复制到 bin 文件夹。

💡 NOTE: 可以使用 Libav 库代替 FFmpeg,但不积极支持这种组合。

GStreamer

WITH_GSTREAMER(默认值:ON

启用与 GStreamer 库的集成,用于解码和编码视频文件、从摄像机和网络流中捕获帧。 可以安装许多插件来扩展支持的格式列表。OpenCV 允许运行作为字符串传递给 cv::VideoCapturecv::VideoWriter 对象的任意 GStreamer 管道。

各种 GStreamer 插件在不同平台上提供硬件加速的视频处理。

Microsoft Media Foundation

WITH_MSMF(Windows;默认值:ON
启用使用 Windows 的内置媒体基础框架(Windows’ built-in Media Foundation framework)的 MSMF 后端。 可用于从相机捕获帧,解码和编码视频文件。

此后端具有硬件加速处理支持——WITH_MSMF_DXVA 编译选项,其默认值为 ON

💡 NOTE: 较早版本的 Windows(10 之前)可能具有不兼容的 Media Foundation 版本,已知在 OpenCV 中使用它们时会出现问题。

DirectShow

WITH_DSHOW(Windows;默认值:ON

此后端使用较旧的 DirectShow 框架。 它只能用于从相机捕获帧。 现在不推荐使用它以支持 MSMF 后端,尽管两者可以在同一个构建中同时启用。

AVFoundation

WITH_AVFOUNDATION(Apple;默认值:ON

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

其它后端

有多个不太流行的框架可用于读取和写入视频。 每个都需要安装相应的库或 SDK。

选项默认值描述
WITH_1394ON使用 DC1394 库对 IIDC IEEE1394 的支持。
WITH_OPENNIOFFOpenNI 可用于从深度感应相机捕获数据。已弃用。
WITH_OPENNI2OFFOpenNI2 可用于从深度感应相机捕获数据。
WITH_PVAPIOFFPVAPI 是用于 Prosilica GigE 相机的旧版 SDK。 已弃用。
WITH_ARAVISOFFAravis 库用于使用 Genicam 相机进行视频采集。
WITH_XIMEAOFFXIMEA 相机的支持。
WITH_XINEOFFXINE 库的支持。
WITH_LIBREALSENSEOFFRealSense 摄像头的支持。
WITH_MFXOFFMediaSDK 库可用于原始视频流的硬件加速解码和编码。
WITH_GPHOTO2OFFGPhoto 库可用于从相机中捕获帧。
WITH_ANDROID_MEDIANDKON自 API level 21 起,MediaNDK 库可以在 Android 上使用。
videoio plugins

OpenCV 从 4.1.0 版本开始,一些 videoio 后端可以构建为插件,从而打破对第三方库的严格依赖,并使它们在运行时成为可选项。以下选项可用于控制此机制:

选项默认值描述
VIDEOIO_ENABLE_PLUGINSON完全启用或禁用插件。
VIDEOIO_PLUGIN_LIST要编译为插件的后端名称的列表,使用逗号或分号分隔。支持的名称有 ffmpeggstreamermsmfmfxall

OpenCV installation overview 中有特定插件的构建说明。

并行处理

一些 OpenCV 算法可以使用多线程来加速处理。OpenCV 可以和一个多线程(Threading)后端一起构建。

后端选项默认值平台描述
pthreadsWITH_PTHREADS_PFON类 Unix基于 pthreads 库的默认后端可在 Linux、Android 和其他类 Unix 平台上使用。线程池在 OpenCV 中实现,可以通过环境变量 OPENCV_THREAD_POOL_* 进行控制。详细信息请参考 modules/core/src/parallel_impl.cpp 文件中的源代码。
Concurrency不适用ONWindowsConcurrency runtime 在 Windows 上可用,除非启用其他后端,否则将在支持的平台上打开。
GCD不适用ONAppleGrand Central Dispatch 在 Apple 平台上可用,除非启用其他后端,否则将自动打开。使用全局系统线程池。
TBBWITH_TBBOFF跨平台Threading Building Blocks 是一个用于并行编程的跨平台库。
OpenMPWITH_OPENMPOFF跨平台OpenMP API 依赖于编译器支持。
HPXWITH_HPXOFF跨平台High Performance ParallelX 是一个实验性后端,更适合多处理器环境。

💡 NOTE: OpenCV 可以从 GitHub 下载和构建 TBB 库,可以使用 BUILD_TBB 选项启用此功能。

多线程插件

从 OpenCV 4.5.2 开始支持动态加载线程后端。 目前仅支持单独的编译过程:首先必须使用一些默认的并行后端(例如 pthreads)构建 OpenCV,然后构建每个插件并将生成的二进制文件复制到 lib 或 bin 文件夹。

选项默认值描述
PARALLEL_ENABLE_PLUGINSON启用插件支持。如果禁用此选项,OpenCV 将不会尝试加载任何内容。

OpenCV installation overview 中有特定插件的构建说明。

GUI 后端(highgui 模块)

OpenCV 依赖于各种 GUI 库来绘制窗口。

选项默认值平台描述
WITH_GTKONLinuxGTK 是 Linux 和类 Unix 操作系统中的常用工具包。 默认情况下如果找到版本 3 将使用它,可以使用 WITH_GTK_2_X 选项来强制使用版本 2。
WITH_WIN32UIONWindowsWinAPI 是 Windows 中的标准 GUI API。
不适用ONmacOSCocoa 是 macOS 中使用的框架。
WITH_QTOFF跨平台Qt 是一个跨平台的 GUI 框架。

💡 NOTE: 带对 Qt 支持的 OpenCV 编译后启用了高级的 highgui 接口,请参阅 Qt New Functions 了解详细信息。

OpenGL

WITH_OPENGL (默认值: OFF

OpenGL 集成可用于与以下后端一起绘制硬件加速窗口:GTK、WIN32 和 Qt。并启用与 OpenGL 的基本互操作性,有关详细信息,请参阅 OpenGL interoperabilityOpenGL support

highgui 插件

从 OpenCV 4.5.3 开始,GTK 后端可以被构建为动态加载的插件。 以下选项可用于控制此机制:

选项默认值描述
HIGHGUI_ENABLE_PLUGINSON完全启用或禁用插件。
HIGHGUI_PLUGIN_LIST要编译为插件的后端名称列表,用逗号或分号分隔。 支持的名称有 gtkgtk2gtk3all

OpenCV installation overview 中有特定插件的构建说明。

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

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

选项默认值描述
WITH_PROTOBUFON启用对 protobuf 库的搜索。OpenCV 可以构建自己的库副本或使用外部库。dnn 模块需要此依赖项,如果找不到则 dnn 模块将被禁用。
BUILD_PROTOBUFON构建自己的 protobuf 库副本。如果要使用外部库则必须禁用此选项。
PROTOBUF_UPDATE_FILESOFF重新生成所有 .proto 文件。必须安装与使用的 protobuf 版本兼容的 protoc 编译器。
OPENCV_DNN_OPENCLON启用内置的 OpenCL 推断后端。
WITH_INF_ENGINEOFF自 OpenVINO 2022.1 起已弃用。启用英特尔推断引擎 (Intel Inference Engine, IE)后端。允许以 IE 格式 (.xml + .bin)来运行网络。推断引擎必须作为 OpenVINO toolkit 的一部分安装,或者作为从源代码构建的独立库安装。
INF_ENGINE_RELEASE2020040000自 OpenVINO 2022.1 起已弃用。定义与 OpenVINO 工具包版本绑定的推断引擎库版本。必须是 10 位的字符串,例如 2020040000 对应于 OpenVINO 2020.4。
WITH_NGRAPHOFF自 OpenVINO 2022.1 起已弃用。启用对英特尔 NGraph 库的支持。该库是推断引擎后端的一部分,它允许运行从 OpenCV 支持的多种格式的文件中读取的任意网络:Caffe、TensorFlow、PyTorch、Darknet 等。必须安装 NGraph 库,它包含在推断引擎中。
WITH_OPENVINOOFF启用对英特尔 OpenVINO Toolkit 的支持。从 OpenVINO>=2022.1 起应该使用此选项而不是 WITH_INF_ENGINEWITH_NGRAPH
OPENCV_DNN_CUDAOFF启用 CUDA 后端。必须安装 CUDA、CUBLAS 和 CUDNN
WITH_HALIDEOFF使用实验性的 Halide 后端,它可以在运行时为 dnn 层生成优化的代码。必须安装 Halide。
WITH_VULKANOFF启用实验性 Vulkan 后端。不需要附加依赖项,但可以使用外部 Vulkan 头文件(VULKAN_INCLUDE_DIRS)。
WITH_TENGINEOFF为 ARM CPU 启用实验性 Tengine 后端。必须安装 Tengine 库。

安装布局

安装根目录

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

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

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

cmake -DCMAKE_INSTALL_PREFIX=install ../opencv

构建库后,(root / 管理员)可以使用以下命令将所有文件复制到配置的安装位置:

cmake --build . --target install

要以普通用户身份将二进制文件安装到系统位置(例如 /usr/local),必须用权限提升(sudo)来运行上面的命令:

sudo cmake --build . --target install

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

组件和位置

这些编译选项可以用于控制是否安装库的一部分:

选项默认值描述
INSTALL_C_EXAMPLESOFF安装samples/cpp 目录中的 C++ 示例源代码。
INSTALL_PYTHON_EXAMPLESOFF安装 samples/python 目录中的 Python 示例源代码。
INSTALL_ANDROID_EXAMPLESOFF安装 samples/android 目录中的 Android 示例源代码。
INSTALL_BIN_EXAMPLESOFF安装预构建的示例应用程序(必须启用 BUILD_EXAMPLES 选项)。
INSTALL_TESTSOFF安装测试(必须启用 BUILD_TESTS 选项)。
OPENCV_INSTALL_APPS_LISTall要安装的预构建应用程序(在 apps 目录中)的列表,用逗号或分号分隔。

以下编译选项可以修改相应组件的相对于安装前缀(install prefix)的安装位置。这些选项的默认值取决于平台和其他选项,要了解详细信息请查看 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_PATH3rdparty (第三方)库
OPENCV_CONFIG_INSTALL_PATHCMake 配置包
OPENCV_INCLUDE_INSTALL_PATH头文件
OPENCV_OTHER_INSTALL_PATH附加数据文件
OPENCV_SAMPLES_SRC_INSTALL_PATH示例源代码
OPENCV_LICENSES_INSTALL_PATH包含的 3rdparty(第三方) 组件的许可证
OPENCV_TEST_DATA_INSTALL_PATH测试数据
OPENCV_DOC_INSTALL_PATH文档
OPENCV_JAR_INSTALL_PATH带有 Java 绑定的 JAR 文件
OPENCV_JNI_INSTALL_PATHJava 绑定的 JNI 部分
OPENCV_JNI_BIN_INSTALL_PATHJava 绑定的 JNI 部分的动态库

以下选项可用于更改常见场景的安装布局:

选项默认值描述
INSTALL_CREATE_DISTRIBOFF调整多项以生成 Windows 和 Android 发行版。
INSTALL_TO_MANGLED_PATHSOFF通过添加一层版本号来允许同时安装多个版本。例如,启用此选项后,头文件将安装到 /usr/include/opencv-4.4.0 而不是 /usr/include/opencv4

其他功能

选项默认值描述
OPENCV_ENABLE_NONFREEOFF库中包含的一些算法已知受专利保护,在默认情况下被禁用。
OPENCV_FORCE_3RDPARTY_BUILDOFF立即启用所有 BUILD_ 选项。
ENABLE_CCACHEON(在类 Unix 平台上)启用 ccache 自动检查。该工具包装编译器调用并缓存结果,可以显著地缩短重新编译的时间。
ENABLE_PRECOMPILED_HEADERSON(对于 MSVC 编译器)启用对预编译头文件的支持。改进构建时间。
BUILD_DOCSOFF启用文档的构建(doxygendoxygen_cppdoxygen_pythondoxygen_javadoc 目标)。构建必须安装 Doxygen 才能构建 C++ 文档。必须安装 Python 和 BeautifulSoup4 才能构建 Python 文档。 必须安装 Javadoc 和 Ant 才能构建 Java 文档(Java SDK 的一部分)。
ENABLE_PYLINTON(启用文档或示例时)启用 Pylint 对 python 脚本进行检查(check_pylint 目标)。必须安装 Pylint。
ENABLE_FLAKE8ON(启用文档或示例时)启用 Flake8 对 python 脚本进行检查(check_flake8 目标)。必须安装 Flake8。
BUILD_JAVAON启用对 Java 包装器的构建。必须安装 Java SDK 和 Ant。
BUILD_FAT_JAVA_LIBON(用于静态 Android 构建)构建单个 opencv_java 动态库,其中包含与 Java 绑定捆绑的所有库功能。
BUILD_opencv_python2ON构建 python2 绑定(已弃用)。必须安装带有开发文件和 numpy 的 Python。
BUILD_opencv_python3ON构建 python3 绑定。必须安装带有开发文件和 numpy 的 Python。

TODO: 需要单独的教程涵盖绑定(bindings)的构建

自动化构建

一些特性是专门为自动化构建环境添加的,比如持续连续集成和打包系统。

选项默认值描述
ENABLE_NOISY_WARNINGSOFF启用几个被认为是噪声(noisy)的编译器警告,它们的重要性低于其他警告。这些警告通常被忽略,但在某些情况下值得检查。
OPENCV_WARNINGS_ARE_ERRORSOFF将编译器警告视为错误,构建将终止。
ENABLE_CONFIG_VERIFICATIONOFF对于每个启用的依赖项(WITH_ 选项),验证它是否已被找到并启用(HAVE_ 变量)。默认情况下,如果未找到依赖项,该功能将被静默关闭,但启用此选项后,CMake 配置将失败。方便需要稳定的库配置而不依赖于环境波动的打包系统。
OPENCV_CMAKE_HOOKS_DIROpenCV 允许通过在每个阶段和子阶段添加自定义 hook 脚本来自定义配置过程。在此变量设置的目录中具有预定义名称的 CMake 脚本将包含在各个配置阶段之前和之后。文件名示例:CMAKE_INIT.cmakePRE_CMAKE_BOOTSTRAP.cmakePOST_CMAKE_BOOTSTRAP.cmake 等。其他名称没有写入文档,可以通过在项目 CMake 文件中搜索 ocv_cmake_hook 宏调用找到。
OPENCV_DUMP_HOOKS_FLOWOFF对每个 CMake hook 脚本调用启用调试消息打印。

Contrib 模块

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

选项默认值描述
WITH_CLPOFF将添加对 videostab 模块所需的 coinor 线性编程(coinor linear programming)库的构建支持。请确保安装 coinor-clp 的开发库。

尚未写入文档的其它选项

BUILD_ANDROID_PROJECTS BUILD_ANDROID_EXAMPLES ANDROID_HOME ANDROID_SDK ANDROID_NDK ANDROID_SDK_ROOT

CMAKE_TOOLCHAIN_FILE

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

  • 13
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于配置OpenCV,以下是一些基本步骤: 1. 下载OpenCV库:您可以在OpenCV官方网站(https://opencv/)上下载最新版本的OpenCV库。 2. 安装CMake:CMake是一个跨平台的开源构建工具,用于生成用于不同平台和编译器的构建脚本。您可以在CMake官方网站(https://cmake.org/)上下载并安装适合您操作系统的版本。 3. 通过CMake配置和生成项目:创建一个新的文件夹作为构建目录,然后在CMake界面中指定源代码路径和构建目录。点击“Configure”按钮,选择合适的生成器(如Visual Studio、Makefile等),然后点击“Generate”按钮生成项目文件。 4. 编译和安装OpenCV:根据生成的项目文件,使用相应的构建工具(如Visual Studio、make等)来编译和构建OpenCV。完成后,运行安装命令将OpenCV库文件复制到系统目录中(例如Windows下的C:\Program Files\opencv)。 5. 配置开发环境:在您的开发环境中设置编译选项和链接器选项,以便能够正确地使用OpenCV库。具体步骤取决于您所使用的开发环境和编译器。 6. 测试OpenCV安装:创建一个简单的OpenCV程序并尝试编译和运行它,以确保OpenCV库已正确配置。 请注意,以上步骤只是一般性的配置指南,具体步骤可能因您的操作系统、开发环境和编译器而有所差异。建议您参考OpenCV官方文档中针对您的特定配置的详细指南,以获得更准确的信息。 希望这些信息对您有所帮助!如有任何进一步的问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值