使用cmake编译opencv过程中的可选参数说明

这篇具有很好参考价值的文章主要介绍了使用cmake编译opencv过程中的可选参数说明。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境说明

  • opencv版本:4.5.5

介绍

通过源码编译opencv时,cmake可以带有很多可选参数,这里对这些可选参数进行说明。
配置选项可以通过几种不同的方式设置:

  • 命令行:cmake-Doption=value…
  • 初始缓存文件:cmake-C my_options.txt…
  • 通过Cmake-GUI进行设定

在本参考中,我们将使用常规命令行。

# 初始化配置文件
cmake ../opencv
# 打印所有选项
cmake -L
# 打印所有选项,附带说明文档
cmake -LH
# 打印所有选项,包括高级
cmake -LA

最常用和有用的是以with_、ENABLE_、BUILD_、OPENCV_开头的选项。默认值因平台和其他选项值而异。

常规选项

1.Build with extra modules

OPENCV_EXTRA_MODULES_PATH选项包含一个分号分隔的目录列表,其中包含将添加到生成中的额外模块。模块目录必须具有兼容的布局和CMakeList.txt。仅支持0级和1级深层模块位置。

# 使用opencv_contrib中的所有模块进行构建
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules ../opencv
# 使用opencvcontrib模块之一构建
cmake -DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules/bgsegm ../opencv
# 使用两个自定义模块构建(必须在bash中转义分号)
cmake -DOPENCV_EXTRA_MODULES_PATH=../my_mod1\;../my_mod2 ../opencv

2.Debug build

CMAKE_BUILD_TYPE选项可用于启用调试构建;生成的二进制文件将包含调试符号,大多数编译器优化将被关闭。若要在Release build中启用调试符号,请启用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)
  • 显式矢量化实现(通用内部函数、原始内部函数等)
  • 调度的优化
  • 显式循环展开

3.Static build

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

cmake -DBUILD_SHARED_LIBS=OFF ../opencv

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

4.Generate pkg-config info

OPENCV_GENERATE_PKGCONFIG选项启用.pc文件生成以及标准CMake包。此文件对于不使用CMake进行生成的项目非常有用。

cmake -DOPENCV_GENERATE_PKGCONFIG=ON ../opencv

5.Build tests, samples and applications

有两种测试:准确性(opencv_test_)和性能(opencv_perf_)。默认情况下启用测试和应用程序。默认情况下未生成示例,应显式启用。相应的cmake选项:

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

6.Build limited set of 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

7.依赖库下载

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

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。用户可以按原样运行这些脚本或根据需要进行修改。

功能特性和相关性

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

cmake -LH ../opencv

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

  • 以with_启用或禁用依赖项开始的选项
  • 从BUILD_启用或禁用构建以及使用OpenCV附带的第三方库开始的选项
  • 以HAVE_开头的选项表示已启用依赖项,如果无法使用自动检测,则可以使用该选项手动启用依赖项。

启用WITH_选项时:

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

1.CUDA支持

WITH_CUDA (default: OFF)

许多算法已经使用CUDA加速实现,这些功能位于单独的模块中。CUDA工具包必须从NVIDIA官方网站安装。对于早于3.9的cmake版本,OpenCV使用自己的cmake/FindCUDA。cmake脚本,用于较新版本-与cmake一起打包的版本。其他选项可用于控制构建过程,例如CUDA_GENERATION或CUDA_ARCH_BIN。这些参数尚未记录,请咨询cmake/OpenCVDetectCUDA。cmake脚本获取详细信息。

2.OpenCL支持

WITH_OPENCL (default: ON)

多种OpenCL加速算法可通过所谓的“透明API(T-API)”获得。此集成在用户级别使用与常规CPU实现相同的功能。如果输入和输出图像参数作为不透明的cv::UMat对象传递,则切换到OpenCL执行分支。更多信息可以在简介和OpenCL支持中找到
在构建时,此功能没有任何先决条件。在运行时,需要一个工作的OpenCL运行时,运行clinfo和/或opencv_version–OpenCL命令来检查它。OpenCL集成的一些参数可以使用环境变量进行修改,例如OPENCV_OpenCL_DEVICE。然而,还没有关于该特性的完整文档,因此请检查modules/core/src/ocl中的源代码。有关详细信息,请参阅cpp文件。

3.图像读写(imgcodecs module)

OpenCV可以在没有任何第三方库帮助的情况下读取以下格式:

  • BMP
  • HDR (WITH_IMGCODEC_HDR)
  • Sun Raster (WITH_IMGCODEC_SUNRASTER)
  • PPM, PGM, PBM, PFM (WITH_IMGCODEC_PXM, WITH_IMGCODEC_PFM)

opencv cmake选项,opencv,opencv,人工智能,计算机视觉

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

(1)GDAL integration
WITH_GDAL (default: OFF)

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

(2)GDCM integration
WITH_GDCM (default: OFF)

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

4.视频读写 (videoio module)

(1)Video4Linux
WITH_V4L (Linux; default: ON )

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

(2)FFmpeg
WITH_FFMPEG (default: ON)

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

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

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

(3)GStreamer
WITH_GSTREAMER (default: ON)

支持与GStreamer库集成,用于解码和编码视频文件,从摄像机和网络流中捕获帧。可以安装许多插件来扩展支持的格式列表。OpenCV允许运行作为字符串传递给cv::VideoCapture和cv::Video Writer对象的任意GStreamer管道。各种GStreamer插件在不同平台上提供硬件加速视频处理。

(4)Microsoft Media Foundation
WITH_MSMF (Windows; default: ON)

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

(5)DirectShow
WITH_DSHOW (Windows; default: ON)

此后端使用旧的DirectShow框架。它只能用于从相机捕捉帧。它现在被弃用,转而支持MSMF后端,尽管两者都可以在同一版本中启用。

(6)AVFoundation
WITH_AVFOUNDATION (Apple; default: ON)

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

(7)Other backends

有多种不太流行的框架可以用来读写视频。每个都需要安装相应的库或SDK。
opencv cmake选项,opencv,opencv,人工智能,计算机视觉

5.多线程后端支持

一些OpenCV算法可以使用多线程来加速处理。OpenCV可以使用线程后端之一构建。
opencv cmake选项,opencv,opencv,人工智能,计算机视觉
OpenCV可以从GitHub下载并构建TBB库,该功能可以通过build_TBB选项启用。

6.GUI界面显示后端支持 (highgui module)

OpenCV依赖于各种GUI库来绘制窗口。
opencv cmake选项,opencv,opencv,人工智能,计算机视觉

7.深度学习神经网络后端支持(dnn module)

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

8.库安装与位置

选项可用于控制是否安装库的一部分:
opencv cmake选项,opencv,opencv,人工智能,计算机视觉
以下选项允许相对于安装前缀修改组件的安装位置。这些选项的默认值取决于平台和其他选项,请检查cmake/OpenCVInstallLayout。cmake文件获取详细信息。
opencv cmake选项,opencv,opencv,人工智能,计算机视觉

9.其他功能

opencv cmake选项,opencv,opencv,人工智能,计算机视觉文章来源地址https://www.toymoban.com/news/detail-596501.html

到了这里,关于使用cmake编译opencv过程中的可选参数说明的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • opencv-gpu版本编译(添加java支持,可选)实现硬解码

    前置条件,显卡驱动,cuda 已安装 这里cuda安装路径为 /usr/local/cuda-11.2 1、准备文件 opencv-4.5.5 opencv_contrib-4.5.5 nucuvid :官网下载 2、复制 NVCUVID 头文件到 cuda 安装目录 include 3、安装相关依赖 执行 01_install_dependence.sh 4、 执行cmake 执行 02_install_opencv.sh 需要注意的地方 : -D CMAKE_

    2024年02月11日
    浏览(38)
  • OpenCV + CLion在windows环境下使用CMake编译, 出现Mutex相关的错误的解决办法

    最近在windows下面用cmake编译OpenCV的项目代码,但是一直碰到找不到mutex的问题,百思不得其解, 查看stackoverfow里面有提到,mingw64有个POSIX的东西,觉得可以一试,就到github上重新下载mingw64 Releases · niXman/mingw-builds-binaries · GitHub  选择x86_64-12.2.0-release-posix-seh-ucrt-rt_v10-rev2.7z版本,重

    2024年02月11日
    浏览(55)
  • cpp文件编译过程 makefile cmake

    直接 gcc 没有-o 的话出来的输出exe文件没有调试信息,相比-o的大小会小一点,只有包含了调试信息文件才可以执行 头文件在编译器的include目录中,编译时 -I 指定库 函数库默认路径在编译器的lib目录中,编译时 -L指定目录,-l 小写L 指定库 函数或者是在别的c与cpp文件中 静态

    2024年02月08日
    浏览(37)
  • windows平台使用CMake工具对darknet的编译以及安装过程+yolov3+图像检测+摄像头检测+视频检测+手机作为摄像头进行检测(详解)

    目录 1.编译和安装教程 (1)安装visual studio 2022 (2)CMake下载及安装 (3)下载darknet.zip文件 (4)安装OpenCV  (5)修改Makefile文件 (6)修改CMakeLists.txt文件 (7)使用CMake工具 2.yolov3进行测试 (1)单张图像进行检测  (2)开启摄像头进行检测 (3) 视频检测 (4)使用手机摄

    2024年02月05日
    浏览(75)
  • cmake与交叉编译(x86 to arm)过程和问题全记录

    公司维护一批c++动态库,由于生产需要,每次更新都要在windows、linux_x86、kylin_arm等多个环境中编译一遍,操作比较麻烦,所以想通过交叉编译的方式在一台机器上边编译多个环境的动态库,减少工作量。考虑到工作难度以及本人水平,决定从官方发布的成品交叉编译工具链中

    2024年04月28日
    浏览(46)
  • (不用手动下文件)opencv用CMake编译下载失败解决

    报错信息: 解决思路: 更改cmake文件,使用GitHub Proxy 代理加速 (ghproxy.com)对网址进行转发。、 解决步骤: ① 打开opencv-4.7.0cmakeOpenCVDownload.cmake,在157行下方增加两行: (opencv-4.7.0为 源码文件夹 ,不同版本的名称会不一样,如opencv-4.6.0等等) ② 修改完如下图所示(修改完

    2024年02月03日
    浏览(39)
  • 编译opencv环境搭建:vs2019 + cmake-3.25 + opencv-4.5.5

    一 下载vs2019 链接:Downloads - Visual Studio Subscriptions Portal 下载社区版本,因为是免费的,大家随便用 下载成功后直接安装就可以了。 有的环境安装好后在属性管理器中可能没有 Microsoft.Cpp.x64 文件 从如下链接下载 Microsoft.Cpp.x64 文件  (链接转载(227条消息) 解决vs2019属性管理器里

    2024年02月11日
    浏览(57)
  • CMAKE编译 opencv、opencv_contrib出现ADE无法下载解决方案

    问题: CMake Error at xxxx/DownlodeADE.cmake:23(add_library): 解决方案:你的opencv的安装路径下,(我的路径就是opencv4.5.4/modules/gapi/cmke/ )找到如下图片,打开DownloadADE.cmake文件 文件中有github网址,需要去文件中提供的网址下载文件,我的opencv版本是4.5.4,有需要可以滴滴。 第一行是你

    2024年02月22日
    浏览(60)
  • 【gcc, cmake, eigen, opencv,ubuntu】二.gcc编译选项

    1.-march=native 其中-march选项就是就是指定目标架构的名字,gcc就会生成针对目标架构优化的目标代码,如-march=prescott会生成针对i5或i7的目标码,从而充分发挥cpu的性能。自gcc4.2,引入了-march=native,从而允许编译器自动探测目标架构并生成针对目标架构优化的目标代码,这比手

    2024年02月09日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包