OpenCV4.9.0配置选项参考(3)

79 篇文章 0 订阅
78 篇文章 0 订阅

返回:OpenCV系列文章目录(持续更新中......)

上一篇 :OpenCV4.9.0开源计算机视觉库安装概述(2)

下一篇:OpenCV 环境变量参考(4)

引言:

OpenCV是一款开源的计算机视觉库,具有跨平台、高速、易用等特点,并广泛应用于各种领域,如医学、安防、自动驾驶、AR/VR等。为了让OpenCV更好地满足用户的需求,在安装时需要选择一些配置选项,以便启用相应的功能和优化。本文将提供给读者一些OpenCV4.9.0的配置选项参考,可以根据自己的需求进行二次编译和配置,以达到更好的性能和体验。同时,本文还会介绍一些常用的OpenCV功能模块及其对应的配置选项,以方便读者更好地进行选项配置。

创作不易,要是对您有用请加个关注或点个赞,非常感谢了!前面500粉丝我会互关。

正文:

注意:

我们假设您已经阅读了 OpenCV 安装概述教程或具有 CMake 的经验。如果没有可以参考文章《OpenCV4.9.0开源计算机视觉库安装概述-CSDN博客

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

  • 命令行: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_PATHoption 包含一个以分号分隔的目录列表,其中包含将添加到构建中的额外模块。模块目录必须具有兼容的布局和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选项可用于启用调试构建;生成的二进制文件将包含调试符号,并且大多数编译器优化将被关闭。若要在“发布版本”中启用调试符号,需要打开选项:BUILD_WITH_DEBUG_INFO

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

cmake -DCMAKE_BUILD_TYPE=调试 ../opencv
cmake --build 。

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

cmake <选项> ../opencv
cmake --build 。--config 调试

如果您使用 GNU libstdc++(GCC 的默认值),您可以打开该选项,那么 C++ 库将在调试模式下使用,例如,在向量元素访问期间将绑定检查索引:ENABLE_GNU_STL_DEBUG

可以使用选项禁用多种优化: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是OpenCV的一个配置选项,用于控制编译生成的OpenCV库是静态库还是共享库。当这个选项被启用时,编译器将生成共享库,而当这个选项被禁用时,编译器将生成静态库。默认情况下,BUILD_SHARED_LIBS是启用的,生成共享库。

可以设置为关闭状态变成静态库例:

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_PKGCONFIGoption 启用文件生成以及标准 CMake 包。此文件对于不使用 CMake 进行生成的项目非常有用。

例:

cmake -DOPENCV_GENERATE_PKGCONFIG=开 ../opencv

注意:

 由于配置过程的复杂性,生成的文件可能包含不完整的第三方依赖项列表,并且可能在某些配置中不起作用,尤其是对于静态构建。此功能自 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 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

注意

其他平台有自己的指令集级别:ARM的NEON或VFPV3,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

注意

有关 CPU 优化选项的更多详细信息,请参见 wiki:https://github.com/opencv/opencv/wiki/CPU-optimizations-build-options

轮廓分析、覆盖率、消毒、硬化、尺寸优化

以下选项可用于生成具有检测或改进安全性的特殊版本。默认情况下,所有选项都处于禁用状态。

选项编译器描述
ENABLE_PROFILINGGCC 或 Clang启用分析编译器和链接器选项。
ENABLE_COVERAGEGCC 或 Clang启用代码覆盖率支持。
OPENCV_ENABLE_MEMORY_SANITIZER不适用在代码中启用几个怪癖来帮助内存清理程序。
ENABLE_BUILD_HARDENINGGCC、Clang、MSVC启用编译器选项,以减少代码被利用的可能性。
ENABLE_LTOGCC、Clang、MSVC启用链路时间优化 (LTO)。
ENABLE_THIN_LTOClang启用精简 LTO,将中间位码合并到二进制文件中,使消费者能够在以后优化其应用程序。

另请参阅

GCC 检测

构建强化

程序间优化

链路时间优化

ThinLTO

启用 IPP 优化

以下选项可用于为每个函数启用 IPP 优化,但会增加 opencv 库的大小。默认情况下,所有选项都处于禁用状态。

选项影响函数文件增加大小
OPENCV_IPP_GAUSSIAN_BLURGaussianBlur()+8Mb
OPENCV_IPP_MEANmean() / meanStdDev()+0.2Mb
OPENCV_IPP_MINMAXminMaxLoc() / minMaxIdx()+0.2Mb
OPENCV_IPP_SUMsum()+0.2Mb

功能特性和依赖关系

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

cmake -LH ../opencv

选项命名约定

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

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

启用选项时:WITH_

  • 如果启用了选项,将构建并启用第三方库 =>设置为ON
  • 如果BUILD选项被禁用,在检测到第三方库并成功加载后,对应的功能会被启用,HAVE选项会被设置为ON。

异构计算

CUDA 支持

WITH_CUDA(默认值:OFF)

许多算法都是使用 CUDA 加速实现的,这些函数位于单独的模块中。作为先决条件,必须从 NVIDIA 官方网站安装 CUDA 工具包。对于早于 3.9 的 cmake 版本,OpenCV 使用自己的cmake/FindCUDA.cmake脚本,对于较新的版本 - 与 CMake 打包的脚本。可以使用其他选项来控制构建过程,例如CUDA_GENERATIONCUDA_ARCH_BIN。这些参数尚未记录,详情请咨询脚本。

注意

自 OpenCV 4.0 版本以来,所有 CUDA 加速算法实现都已移至 opencv_contrib 存储库。要同时构建 opencv 和opencv_contrib,请选中 Build with extra modules

一些教程可以在相应的部分找到: 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

格式选项默认强制构建选项
PNGWITH_PNG打开BUILD_PNG
JPEGWITH_JPEG打开BUILD_JPEG
TIFFWITH_TIFF打开BUILD_TIFF
WEBPWITH_WEBP打开BUILD_WEBP
OpenJPEG和JPEG2000WITH_OPENJPEG打开BUILD_OPENJPEG
JasPer 和JPEG2000WITH_JASPER打开(见注释)BUILD_JASPER
EXRWITH_OPENEXR打开BUILD_OPENEXR

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

注意

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的工作原理,注册表,优先级

视频4Linux

WITH_V4L(Linux;默认值:ON )

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

FFmpeg 

WITH_FFMPEG(默认值:ON)

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

  • avcodec
  • avformat
  • avutil
  • swscale
  • avresample (optional)

例外情况是 Windows 平台,其中包含 FFmpeg 的预构建插件库将在配置阶段下载,并复制到包含所有生成库的文件夹中。bin

注意

可以使用 Libav 库代替 FFmpeg,但这种组合不受建议。

GStreamer

WITH_GSTREAMER(默认值:ON)

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

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

Microsoft Media Foundation(微软多媒体接口)

WITH_MSMF(Windows;默认值:ON)

启用使用 Windows 内置 Media Foundation 框架的 MSMF 后端。可用于从相机中捕获帧,对视频文件进行解码和编码。此后端具有硬件加速处理支持(选项,默认为 ON)。WITH_MSMF_DXVA

注意

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

直接显示

WITH_DSHOW(Windows;默认值:ON)

此后端使用较旧的DirectShow框架。它只能用于从相机捕获帧。它现在已被弃用,取而代之的是 MSMF 后端,尽管两者可以在同一版本中启用。

苹果框架支持

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关闭实感摄像头支持。
WITH_MFX关闭MediaSDK 库可用于原始视频流的硬件加速解码和编码。
WITH_GPHOTO2关闭GPhoto 库可用于从相机中获取帧。
WITH_ANDROID_MEDIANDKMediaNDK 库自 API 级别 21 起在 Android 上可用。

VideoIO插件

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

选项默认描述
VIDEOIO_ENABLE_PLUGINS完全启用或禁用插件。
VIDEOIO_PLUGIN_LIST以逗号或分号分隔的后端名称列表,以编译为插件。支持的名称包括 ffmpeggstreamermsmfmfx 和 all

查看 OpenCV 安装概述,了解独立插件构建说明。

并行处理

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

后端选项默认平台描述
pthreadsWITH_PTHREADS_PF类 Unix基于 pthreads 库的默认后端可在 Linux、Android 和其他类 Unix 平台上使用。线程池是在OpenCV中实现的,可以通过环境变量OPENCV_THREAD_POOL_*进行控制。有关详细信息,请查看 modules/core/src/parallel_impl.cpp 文件中的源代码。
ConcurrencyWindows并发运行时在 Windows 上可用,除非启用其他后端,否则将在支持的平台上打开。
GCD苹果Grand Central Dispatch 可在 Apple 平台上使用,除非启用其他后端,否则将自动打开。使用全局系统线程池。
TBBWITH_TBB关闭倍数线程构建块是一个用于并行编程的跨平台库。
OpenMP的WITH_OPENMP关闭倍数OpenMP的API 依赖于编译器支持。
HPXWITH_HPX关闭倍数高性能 ParallelX 是一个实验性后端,更适合多处理器环境。

注意

OpenCV 可以从 GitHub 下载并构建 TBB 库,此功能可以通过该选项BUILD_TBB启用。

线程插件

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

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

查看 OpenCV 安装概述,了解独立插件构建说明。

GUI 后端(highgui 模块)

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

选项默认平台描述
WITH_GTKLinux操作系统GTK 是 Linux 和类 Unix 操作系统中的常用工具包。默认情况下,如果找到版本 3,将使用版本 3,可以使用该选项强制版本 2。WITH_GTK_2_X
WITH_WIN32UI窗户WinAPI 是 Windows 中的标准 GUI API。
不适用macOS操作系统Cocoa 是 macOS 中使用的框架。
WITH_QT关闭跨平台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以逗号或分号分隔的后端名称列表,以编译为插件。支持的名称包括 gtkgtk2gtk3 和 all

查看 OpenCV 安装概述,了解独立插件构建说明。

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

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

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

安装布局

安装根

若要安装生成的二进制文件,应配置根位置。默认值取决于分布,在 Ubuntu 中通常设置为 。它可以在配置过程中更改:/usr/local

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

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

cmake -DCMAKE_INSTALL_PREFIX=安装 ../opencv

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

cmake --build 。--目标安装

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

sudo cmake --build 。--目标安装

注意

在某些平台 (Linux) 上,可以在安装过程中删除符号信息。二进制文件将缩小 10-15%,但调试将受到限制:

cmake --build 。--目标安装/剥离

组件和位置

选项手杖用于控制是否安装库的一部分:

选项默认描述
INSTALL_C_EXAMPLES关闭从 samples/cpp 目录安装 C++ 示例源。
INSTALL_PYTHON_EXAMPLES关闭从 samples/python 目录安装 Python 示例源。
INSTALL_ANDROID_EXAMPLES关闭从 samples/android 目录安装 Android 示例源。
INSTALL_BIN_EXAMPLES关闭安装预生成的示例应用程序(必须启用)。BUILD_EXAMPLES
INSTALL_TESTS关闭安装测试(必须启用)。BUILD_TESTS
OPENCV_INSTALL_APPS_LIST要安装的预生成应用程序的逗号或分号分隔列表(从 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_PATHcmake 配置包
OPENCV_INCLUDE_INSTALL_PATH头文件
OPENCV_OTHER_INSTALL_PATH额外的数据文件
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_PATHJava 绑定的 JNI 部分
OPENCV_JNI_BIN_INSTALL_PATHJava 绑定的 JNI 部分的动态库

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

选项默认描述
INSTALL_CREATE_DISTRIB关闭调整多个内容以生成 Windows 和 Android 发行版。
INSTALL_TO_MANGLED_PATHS关闭将一个级别添加到多个安装位置,以允许并行安装。例如,在启用此选项的情况下,标头文件将安装到 _/usr/include/opencv-4.4.0_ 而不是 _/usr/include/opencv4_。

其他功能

选项默认描述
OPENCV_ENABLE_NONFREE关闭众所周知,库中包含的某些算法受专利保护,默认情况下处于禁用状态。
OPENCV_FORCE_3RDPARTY_BUILD关闭一次启用所有选项。BUILD_
OPENCV_IPP_ENABLE_ALL关闭一次启用所有选项。OPENCV_IPP_
ENABLE_CCACHEON(在类 Unix 平台上)启用 ccache 自动检测。此工具包装编译器调用并缓存结果,可以显著缩短重新编译时间。
ENABLE_PRECOMPILED_HEADERSON(适用于 MSVC)启用预编译标头支持。缩短了构建时间。
BUILD_DOCS关闭启用文档构建(doxygendoxygen_cppdoxygen_python doxygen_javadoc 目标)。必须安装 Doxygen 才能生成 C++ 文档。必须安装 Python 和 BeautifulSoup4 才能构建 Python 文档。必须安装 Javadoc 和 Ant 才能构建 Java 文档(Java SDK 的一部分)。
ENABLE_PYLINT(启用文档或示例时)使用 Pylintcheck_pylint目标)启用 python 脚本检查。必须安装 Pylint。
ENABLE_FLAKE8(启用文档或示例时)使用 Flake8check_flake8目标)启用 python 脚本检查。必须安装 Flake8。
BUILD_JAVA启用 Java 包装器构建。必须安装 Java SDK 和 Ant。
BUILD_FAT_JAVA_LIBON(适用于静态 Android 构建)构建单个opencv_java动态库,其中包含与 Java 绑定捆绑的所有库功能。
BUILD_opencv_python2生成 python2 绑定(已弃用)。必须安装带有开发文件和 numpy 的 Python。
BUILD_opencv_python3构建 python3 绑定。必须安装带有开发文件和 numpy 的 Python。
CAROTENE_NEON_ARCH'(自动)'将 NEON Arch 切换为 Carotene。如果它不设置任何内容,它将被自动检测。如果设置为 8,则使用 ARMv8(及更高版本)。否则,将使用 ARMv7。

下面需要单独的教程来介绍绑定构建

自动构建

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

选项默认描述
ENABLE_NOISY_WARNINGS关闭启用多个被视为嘈杂的编译器警告,即重要性低于其他警告。这些警告通常被忽略,但在某些情况下可能值得检查。
OPENCV_WARNINGS_ARE_ERRORS关闭将编译器警告视为错误。生成将停止。
ENABLE_CONFIG_VERIFICATION关闭对于每个启用的依赖项(选项),验证是否已找到并启用它(变量)。默认情况下,如果未找到依赖项,功能将静默关闭,但启用此选项后,cmake 配置将失败。适用于需要稳定库配置的包装系统,而不受环境波动的影响。WITH_HAVE_
OPENCV_CMAKE_HOOKS_DIROpenCV 允许通过在每个阶段和子阶段添加自定义钩子脚本来自定义配置过程。预定义名称位于此变量设置的目录中的 cmake 脚本将在各个配置阶段之前和之后包含。文件名示例:CMAKE_INIT.cmakePRE_CMAKE_BOOTSTRAP.cmakePOST_CMAKE_BOOTSTRAP.cmake等。其他名称没有记录,可以通过搜索ocv_cmake_hook宏调用在项目 cmake 文件中找到。
OPENCV_DUMP_HOOKS_FLOW关闭在每次 cmake 钩子脚本调用时启用调试消息打印。

Contrib 模块

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

选项默认描述
WITH_CLP关闭将添加模块中所需的 coinor 线性规划库构建支持。确保安装 coinor-clp 的开发库。videostab

注意:本文大量引用官方的资料需要原版资料请移步官网查看相关资料

  • 26
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

愚梦者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值