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_PATHoption 包含一个以分号分隔的目录列表,其中包含将添加到构建中的额外模块。模块目录必须具有兼容的布局和CMakeLists.txt,简要说明可以在编码风格指南中找到。

例子:

# 使用 opencv_contrib 中的所有模块进行构建
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/模块 ../opencv
# 使用 opencv_contrib 模块之一进行构建
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/模块/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 --构建。

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

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

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

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

  • 一些第三方库(例如 IPP、Lapack、Eigen)
  • 显式矢量化实现(通用内部函数、原始内部函数等)
  • 调度优化
  • 显式循环展开

另请参阅

CMAKE_BUILD_TYPE — CMake 3.28.1 Documentation

https://gcc.gnu.org/onlinedocs/libstdc++/manual/using_macros.html

CPU optimizations build options · opencv/opencv Wiki · GitHub

静态构建

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

例:

cmake -DBUILD_SHARED_LIBS=关闭 ../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选项允许文件生成与标准 CMake 包一起生成。此文件对于不使用 CMake 进行生成的项目非常有用。.pc

例:

cmake -DOPENCV_GENERATE_PKGCONFIG=ON ../opencv

注意

由于配置过程的复杂性,生成的文件可能包含不完整的第三方依赖项列表,并且可能在某些配置中不起作用,尤其是对于静态构建。此功能自 4.x 版本起不再正式支持,默认情况下处于禁用状态。.pc

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

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

对应的 cmake 选项:

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

构建有限的模块集

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

cmake -DBUILD_opencv_calib3d=关闭 ../opencv

相反的选项是仅构建指定的模块及其所依赖的所有模块:

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

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

-- OpenCV模块:
-- 待构建:calib3d 核心功能2d flann highgui imgcodecs imgproc ts videoio

下载的依赖项

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

导出 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.txtdownload_with_wget.sh

CPU 优化级别

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

cmake -DCPU_BASELINE=AVX2 ../opencv

注意

其他平台有自己的指令集级别:在 ARM 上,在 PowerPC 上。VFPV3NEONVSX

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

cmake -DCPU_DISPATCH=AVX,AVX2 ../opencv

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

cmake -DCPU_DISPATCH= ../opencv

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

# 禁用通用内部函数
cmake -DCV_ENABLE_INTRINSICS=关闭 ../opencv
# 禁用所有可能的内置优化
cmake -DCV_DISABLE_OPTIMIZATION=ON ../opencv

注意

有关 CPU 优化选项的更多详细信息,请参见 wiki:CPU optimizations build options · opencv/opencv Wiki · GitHub

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

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

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

另请参阅

GCC 仪器

构建强化

程序间优化

链路时间优化

ThinLTO (简体式)

启用 IPP 优化

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

选择功能+ 粗略尺寸
OPENCV_IPP_GAUSSIAN_BLURGaussianBlur()+8兆字节
OPENCV_IPP_MEANmean() / meanStdDev()+0.2兆字节
OPENCV_IPP_MINMAXminMaxLoc() / minMaxIdx()+0.2兆字节
OPENCV_IPP_SUMsum()+0.1兆字节

   在线教程

有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

请添加图片描述

人工智能书籍

第一阶段:零基础入门(3-6个月)

新手应首先通过少而精的学习,看到全景图,建立大局观。 通过完成小实验,建立信心,才能避免“从入门到放弃”的尴尬。因此,第一阶段只推荐4本最必要的书(而且这些书到了第二、三阶段也能继续用),入门以后,在后续学习中再“哪里不会补哪里”即可。

第二阶段:基础进阶(3-6个月)

熟读《机器学习算法的数学解析与Python实现》并动手实践后,你已经对机器学习有了基本的了解,不再是小白了。这时可以开始触类旁通,学习热门技术,加强实践水平。在深入学习的同时,也可以探索自己感兴趣的方向,为求职面试打好基础。

第三阶段:工作应用

这一阶段你已经不再需要引导,只需要一些推荐书目。如果你从入门时就确认了未来的工作方向,可以在第二阶段就提前阅读相关入门书籍(对应“商业落地五大方向”中的前两本),然后再“哪里不会补哪里”。

 有需要的小伙伴,可以点击下方链接免费领取或者V扫描下方二维码免费领取🆓

在这里插入图片描述

 

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!关于配置OpenCV,以下是一些基本步骤: 1. 下载OpenCV库:您可以在OpenCV官方网站(https://opencv/)上下载最新版本的OpenCV库。 2. 安装CMakeCMake是一个跨平台的开源构建工具,用于生成用于不同平台和编译器的构建脚本。您可以在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、付费专栏及课程。

余额充值