使用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日
    浏览(27)
  • 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日
    浏览(44)
  • cpp文件编译过程 makefile cmake

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

    2024年02月08日
    浏览(27)
  • 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日
    浏览(50)
  • cmake与交叉编译(x86 to arm)过程和问题全记录

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

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

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

    2024年02月03日
    浏览(27)
  • 编译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日
    浏览(37)
  • 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日
    浏览(45)
  • Windows环境利用QT+CMake编译mingw版本的opencv

    Opencv官网没有提供mingw版本的opencv库,所以需要自己编译,下面是编译过程,32位64位方法类似。 可以直接下载编译好的mingw版本opencv4.4: 使用CMAKE3.22+QT5.13编译后的opencv4.4(32位的)资源-CSDN文库 如果网络不好,可能会需要自己手动下载下面的文件:  opencv_videoio_ffmpeg.dll+ope

    2024年02月13日
    浏览(35)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包