1.安装cuda和对应的cudnn

显卡驱动版本决定了cuda版本,cuda版本决定cudnn版本,显卡驱动可升级。安装步骤如下:

测试cuda是否安装成功:

  • 第一种方法:win+r输入cmd,控制台输入nvcc –version,显示如下则表明cuda工具包安装成功;
  • avatar
  • 第二种方法:在..\NVIDIA GPU Computing Toolkit\CUDA\vxx.xx\extras\demo_suite路径下运行powershell,输入:.\deviceQuery.exe
    显示Result = PASS,即表明安装成功。

2.下载opencv源码

opencv下载官网: https://opencv.org/releases/ 或者github下载:https://github.com/opencv/opencv/archive/4.6.0.zip

拓展模块下载:https://github.com/opencv/opencv_contrib/tags

3.camake编译

双击camke.exe,选择源码路径和生成路径:

avatar

点击configure,编译器默认,平台选择x64,然后点击finish:

avatar

点击configure,等待执行完成后查看执行日志,出现下列问题则表明编译过程中从网络上下载资源失败,例如:

avatar
上述错误表示FFMPEG下载失败,在目标路径下找到CMakeDownloadLog.txt,打开该日志文件,查看缺失文件及下载地址:

avatar
将上述链接复制到该网站https://ghproxy.com/, 即可下载所缺资源,依次下载并替换所有缺失的文件。

再次点击configure,等待执行结束后在新生成的选项中,勾选/取消勾选相关变量,各变量的作用如下:

ANT_EXECUTABLE:如果您的项目需要使用Ant构建系统,则可以使用此变量指定Ant可执行文件的路径。Ant是一个Java构建工具,它允许您构建Java应用程序和项目。
BUILD_CUDA_STUBS:如果您使用了OpenCV CUDA模块,可以使用此变量指定是否为CUDA API生成存根。存根是一个占位符,用于指示实际函数实现的位置。生成存根可以使编译器在编译时使用正确的函数签名,从而避免出现编译错误。
BUILD_DOCS:如果您需要构建OpenCV文档,则可以使用此变量启用此功能。文档包括API文档、安装指南和示例代码。
BUILD_EXAMPLES:如果您需要构建OpenCV示例程序,则可以使用此变量启用此功能。示例程序是演示OpenCV功能和用法的代码示例。
BUILD_IPP_IW:Intel IPP IW(Image Workbench)是一组用于图像处理的函数库。如果您需要使用此功能,则可以使用此变量启用IPP IW支持。
BUILD_ITT:Intel Threading Tools(ITT)是一组用于并行编程的工具,它可以帮助您优化代码以充分利用多核处理器。如果您需要使用ITT,则可以使用此变量启用ITT支持。
BUILD_JASPER:JasPer是一种用于图像压缩的开源库。如果您需要使用此功能,则可以使用此变量启用JasPer支持。
BUILD_JAVA:如果您需要使用OpenCV Java绑定,则可以使用此变量启用此功能。Java绑定是一组Java类和方法,它们允许您在Java中使用OpenCV库。
BUILD_JPEG:libjpeg-turbo是一种优化的JPEG图像压缩库。如果您需要使用此功能,则可以使用此变量启用libjpeg-turbo支持。
BUILD_LIST:如果您只需要构建特定的OpenCV模块,则可以使用此变量指定模块列表。模块是OpenCV库的一部分,它们提供特定的功能。
BUILD_OPENEXR:OpenEXR是一种高动态范围(HDR)图像文件格式,用于处理HDR图像。如果您需要使用此格式,则可以使用此变量启用OpenEXR支持。
BUILD_OPENJPEG:OpenJPEG是一种开源的JPEG2000编解码器和库。如果您需要使用此功能,则可以使用此变量启用OpenJPEG支持。
BUILD_PACKAGE:如果您需要构建OpenCV软件包,则可以使用此变量启用此功能。软件包是一组预编译的二进制文件和依赖项,可方便地分发您的OpenCV应用程序。
BUILD_PERF_TESTS:这个变量决定是否构建OpenCV性能测试。当设置为ON时,会生成性能测试程序,并将它们链接到OpenCV库。性能测试程序可以通过运行”make test”命令来进行测试。
BUILD_PNG:这个变量决定是否构建libpng库。libpng是一种用于处理PNG图像格式的库,如果你想在OpenCV中使用PNG图像格式,就需要启用这个选项。
BUILD_PROTOBUF:这个变量决定是否构建Google Protocol Buffers库。Protocol Buffers是一种序列化数据的格式,它可以将数据序列化成二进制格式,并且可以通过定义协议来实现跨平台的数据交换。如果你想在OpenCV中使用Protocol Buffers,就需要启用这个选项。
BUILD_SHARED_LIBS:这个变量决定是否构建OpenCV作为共享库。当设置为ON时,OpenCV将构建为共享库,这意味着OpenCV的各个部分将被编译成单独的共享对象,然后在运行时动态链接。如果你不想使用共享库,可以将此选项设置为OFF,这将导致OpenCV被构建为静态库。
BUILD_TBB:这个变量决定是否构建TBB库。TBB(Threading Building Blocks)是一个跨平台的C++库,用于并行化应用程序的开发。如果你想在OpenCV中使用TBB库来实现并行处理,就需要启用这个选项。
BUILD_TESTS:这个变量决定是否构建OpenCV的测试程序。当设置为ON时,OpenCV将构建测试程序并进行测试。这些测试程序可以用来确保OpenCV的正常运行。
BUILD_TIFF:这个变量决定是否构建libtiff库。libtiff是一种用于处理TIFF图像格式的库,如果你想在OpenCV中使用TIFF图像格式,就需要启用这个选项。
BUILD_USE_SYMLINKS:这个变量决定是否使用符号链接来安装文件。如果设置为ON,将使用符号链接来安装文件,否则将使用复制方式。
BUILD_WEBP:这个变量决定是否构建libwebp库。libwebp是一种用于处理WebP图像格式的库,如果你想在OpenCV中使用WebP图像格式,就需要启用这个选项。
BUILD_WITH_DEBUG_INFO:这个变量决定是否使用调试信息构建OpenCV库。如果设置为ON,将会在编译OpenCV库时生成调试信息,以便在调试时使用。
BUILD_WITH_DYNAMIC_IPP:控制 OpenCV 是否使用动态链接的 IPP 库,即是否将 IPP 库打包成动态链接库(.so/.dll)并在运行时进行加载。默认值为 OFF,表示使用静态链接的 IPP 库,即将 IPP 库链接到 OpenCV 库中,生成一个大的静态库。如果设置为 ON,则 OpenCV 会链接到动态 IPP 库,生成较小的 OpenCV 动态库。注意,如果要使用动态 IPP 库,需要先将 IPP 库编译成动态库。
BUILD_WITH_STATIC_CRT:控制是否使用静态链接的 CRT 库,即将 CRT 库链接到 OpenCV 库中,生成一个大的静态库。默认值为 OFF,表示使用动态链接的 CRT 库,即将 CRT 库打包成动态链接库,并在运行时进行加载。如果设置为 ON,则 OpenCV 会链接到静态 CRT 库,生成较大的 OpenCV 静态库。
BUILD_ZLIB:控制 OpenCV 是否使用 zlib 库。默认值为 ON,表示启用 zlib 库,将其链接到 OpenCV 库中。如果设置为 OFF,则 OpenCV 不会链接 zlib 库,也不会对压缩图像使用 zlib。
BUILD_opencv_apps:启用此选项会构建 OpenCV 应用程序示例,包括人脸检测、图像处理、目标跟踪等。
BUILD_opencv_aruco:启用此选项会构建 OpenCV 的 ArUco 模块,该模块用于相机标定和姿态估计。
BUILD_opencv_barcode:启用此选项会构建 OpenCV 的 Barcode 模块,该模块用于条形码和二维码的检测和解码。
BUILD_opencv_bgsegm:启用此选项会构建 OpenCV 的 Background Segmentation 模块,该模块用于背景分割和前景提取。
BUILD_opencv_bioinspired:启用此选项会构建 OpenCV 的 Bioinspired 模块,该模块用于仿生学图像处理,包括视网膜模拟和神经网络模拟等。
BUILD_opencv_calib3d:启用此选项会构建 OpenCV 的 Calibration 3D 模块,该模块用于相机标定和三维重建。
BUILD_opencv_ccalib:启用此选项会构建 OpenCV 的 Charuco 模块,该模块用于相机标定和姿态估计。
BUILD_opencv_core:启用此选项会构建 OpenCV 的 Core 模块,该模块包含了 OpenCV 的核心功能,如矩阵操作和图像处理等。
BUILD_opencv_cudaarithm:启用此选项会构建 OpenCV 的 CUDA Arithmetics 模块,该模块使用 CUDA 加速矩阵计算。
BUILD_opencv_cudabgsegm:启用此选项会构建 OpenCV 的 CUDA Background Segmentation 模块,该模块使用 CUDA 加速背景分割。
BUILD_opencv_cudacodec:启用此选项会构建 OpenCV 的 CUDA Video Encoding/Decoding 模块,该模块使用 CUDA 加速视频编码和解码。
BUILD_opencv_cudafeatures2d:启用此选项会构建 OpenCV 的 CUDA Feature Detection 模块,该模块使用 CUDA 加速特征检测。
BUILD_opencv_cudafilters:启用此选项会构建 OpenCV 的 CUDA Filters 模块,该模块使用 CUDA 加速图像滤波。
BUILD_opencv_cudaimgproc: 构建 OpenCV 的 CUDA 图像处理模块,该模块利用 GPU 进行加速,提高了图像处理的效率。
BUILD_opencv_cudalegacy: 构建 OpenCV 的 CUDA 旧版模块,这些模块在最新版本中已经被移除了,因为它们的功能已经被 CUDA 编程模型所代替。
BUILD_opencv_cudaobjdetect: 构建 OpenCV 的 CUDA 物体检测模块,利用 GPU 进行加速,提高了物体检测的效率。
BUILD_opencv_cudaoptflow: 构建 OpenCV 的 CUDA 光流计算模块,这个模块利用 GPU 进行加速,提高了光流计算的效率。
BUILD_opencv_cudastereo: 构建 OpenCV 的 CUDA 立体视觉模块,该模块利用 GPU 进行加速,提高了立体视觉处理的效率。
BUILD_opencv_cudawarping: 构建 OpenCV 的 CUDA 图像扭曲模块,该模块利用 GPU 进行加速,提高了图像扭曲处理的效率。
BUILD_opencv_cudev: 构建 OpenCV 的 CUDA 设备支持模块,该模块提供了许多 CUDA 编程所需要的支持,如矩阵计算、内存操作等。
BUILD_opencv_datasets: 构建 OpenCV 数据集模块,该模块包含了许多常用的数据集,如 MNIST、CIFAR 等。
BUILD_opencv_dnn: 构建 OpenCV 的深度学习模块,该模块提供了常用的深度学习框架的接口,如 Caffe、TensorFlow 等。
BUILD_opencv_dnn_objdetect: 构建 OpenCV 的深度学习物体检测模块,该模块利用深度学习技术进行物体检测,可以获得更高的检测精度。
BUILD_opencv_dnn_superres: 构建 OpenCV 的深度学习超分辨率模块,该模块利用深度学习技术进行图像超分辨率处理,可以获得更高的图像清晰度。
BUILD_opencv_dpm:构建OpenCV中的dpm模块,包括检测器训练和测试。
BUILD_opencv_face:构建OpenCV中的face模块,包括人脸识别和面部特征检测。
BUILD_opencv_features2d:构建OpenCV中的features2d模块,包括特征提取和匹配算法。
BUILD_opencv_flann:构建OpenCV中的flann模块,包括快速最近邻搜索。
BUILD_opencv_fuzzy:构建OpenCV中的fuzzy模块,包括基于模糊逻辑的算法。
BUILD_opencv_gapi:构建OpenCV中的gapi模块,包括计算图编程接口。
BUILD_opencv_hfs:构建OpenCV中的hfs模块,包括基于超像素的图像分割算法。
BUILD_opencv_highgui:构建OpenCV中的highgui模块,包括图像和视频I / O功能。
BUILD_opencv_img_hash:构建OpenCV中的img_hash模块,包括图像哈希算法。
BUILD_opencv_imgcodecs:构建OpenCV中的imgcodecs模块,包括图像读取和写入功能。
BUILD_opencv_imgproc:构建OpenCV中的imgproc模块,包括基本的图像处理功能。
BUILD_opencv_intensity_transform:构建OpenCV中的intensity_transform模块,包括基于强度的图像转换算法。
BUILD_opencv_java_bindings_generator:构建OpenCV中的Java绑定生成器,用于生成Java API。
BUILD_opencv_js:构建OpenCV中的JavaScript绑定,以便在Web浏览器中使用OpenCV。
BUILD_opencv_js_bindings_generator:构建OpenCV中的JavaScript绑定生成器,用于生成JavaScript API。
BUILD_opencv_line_descriptor: 构建OpenCV中的线描述符模块,该模块提供了一种计算线特征的方法,可用于物体识别等应用。
BUILD_opencv_mcc: 构建OpenCV中的颜色相关模块,该模块包括基于颜色的目标检测和跟踪算法。
BUILD_opencv_ml: 构建OpenCV中的机器学习模块,该模块包括支持向量机、决策树、神经网络等算法。
BUILD_opencv_objc_bindings_generator: 构建用于Objective-C的OpenCV绑定生成器。
BUILD_opencv_objdetect: 构建OpenCV中的目标检测模块,该模块提供了一系列经典的物体检测算法,如Haar级联分类器和HOG特征+SVM分类器。
BUILD_opencv_optflow: 构建OpenCV中的光流模块,该模块提供了一系列光流估计算法,包括基于块匹配、金字塔LK算法等。
BUILD_opencv_phase_unwrapping: 构建OpenCV中的相位解包模块,该模块提供了相位图像解包的方法。
BUILD_opencv_photo: 构建OpenCV中的图像处理模块,该模块提供了一些图像修复和增强算法,如图像去噪、图像平滑、色彩平衡等。
BUILD_opencv_plot: 构建OpenCV中的绘图模块,该模块提供了一些数据可视化和绘图算法。
BUILD_opencv_python3: 构建OpenCV的Python3接口。
BUILD_opencv_python_bindings_generator: 构建用于Python的OpenCV绑定生成器。
BUILD_opencv_python_tests: 构建OpenCV的Python测试套件。
BUILD_opencv_quality: 构建OpenCV中的图像质量评估模块,该模块提供了一些评估图像质量的算法,如PSNR、SSIM等。
BUILD_opencv_rapid 控制是否构建 Rapid Library,它是一个用于快速模板匹配的库。
BUILD_opencv_reg 控制是否构建 Reg Library,它提供了一个基于局部图像块相似性的图像匹配算法。
BUILD_opencv_rgbd 控制是否构建 RGB-D 功能,这些功能提供了利用 RGB 和深度图像进行 3D 点云重建和相机位姿估计的工具。
BUILD_opencv_saliency 控制是否构建显著性检测模块,它提供了一些算法来计算图像中的显著性区域。
BUILD_opencv_shape 控制是否构建形状模块,它提供了一些工具来检测和描述图像中的形状。
BUILD_opencv_stereo 控制是否构建立体视觉模块,它提供了一些算法来计算图像对之间的深度信息。
BUILD_opencv_stitching 控制是否构建图像拼接模块,它提供了一些算法来将多个图像拼接成全景图。
BUILD_opencv_structured_light 控制是否构建结构光模块,它提供了一些工具来使用结构光技术进行三维扫描。
BUILD_opencv_superres 控制是否构建超分辨率模块,它提供了一些算法来增加图像的分辨率。
BUILD_opencv_surface_matching 控制是否构建表面匹配模块,它提供了一些算法来进行 3D 模型匹配。
BUILD_opencv_text 控制是否构建文本检测和识别模块,它提供了一些算法来检测和识别图像中的文本。
BUILD_opencv_tracking 控制是否构建目标跟踪模块,它提供了一些算法来跟踪视频中的目标。
BUILD_opencv_ts:用于构建 OpenCV 的测试模块。
BUILD_opencv_video:用于构建 OpenCV 的视频处理模块,例如读写视频文件、视频编解码等。
BUILD_opencv_videostab:用于构建 OpenCV 的视频稳定模块,可用于去除视频中的抖动或晃动。
BUILD_opencv_wechat_qrcode:用于构建 OpenCV 的微信二维码识别模块。
BUILD_opencv_world:用于构建 OpenCV 的集成编译包,将所有模块和依赖项打包成一个库,方便在其他项目中使用。
BUILD_opencv_xfeatures2d:用于构建 OpenCV 的扩展特征检测模块,提供了更多的特征检测算法。
BUILD_opencv_ximgproc:用于构建 OpenCV 的图像处理模块,提供了更多的图像处理算法。
BUILD_opencv_xobjdetect:用于构建 OpenCV 的扩展目标检测模块,提供了更多的目标检测算法。
BUILD_opencv_xphoto:用于构建 OpenCV 的扩展图像处理模块,提供了更多的图像增强和修复算法。
CLAMDBLAS_INCLUDE_DIR:ClamdBlas 库的头文件路径。
CLAMDBLAS_ROOT_DIR:ClamdBlas 库的根目录路径。
CLAMDFFT_INCLUDE_DIR:ClamdFFT 库的头文件路径。
CLAMDFFT ROOT DIR:指定CLAMDFFT库的根目录
CMAKE BUILD TYPE:指定CMake的构建类型,如Debug、Release等
CMAKE CONFIGURATION TYPES:指定CMake支持的配置类型,如Debug、Release、MinSizeRel等
CMAKE INSTALL PREFIX:指定make install命令执行时文件安装的目标路径
CPU BASELINE:指定OpenCV编译时使用的CPU基线,即支持的最低CPU指令集
CPU DISPATCH:指定OpenCV编译时使用的CPU调度选项,即针对不同的CPU类型进行优化
CUDA ARCH BIN:指定目标二进制文件支持的CUDA架构版本
CUDA ARCH PTX:指定目标PTX代码支持的CUDA架构版本
CUDA ENABLE DEPRECATED GENERATION:开启此选项,可以在编译OpenCV时支持已过时的CUDA API
CUDA FAST MATH:开启此选项,可以在编译时使用CUDA的快速数学库
CUDA GENERATION:指定CUDA生成的目标代码的版本
CUDA HOST COMPILER:指定用于编译CUDA代码的主机编译器
CUDA TOOLKIT ROOT DIR:指定CUDA Toolkit的根目录
CUDA USE STATIC CUDA RUNTIME:开启此选项,可以在编译OpenCV时使用静态链接的CUDA运行时库
CV DISABLE OPTIMIZATION:在编译 OpenCV 时禁用优化。这个变量一般用于调试和测试目的,因为禁用优化可以使代码更易于调试和理解,但是可能会影响性能。
CV ENABLE INTRINSICS:启用 CPU 指令集(如 SSE、AVX 等)来优化 OpenCV 的性能。默认情况下,OpenCV 会自动检测并启用可用的指令集。
CV TRACE:启用 OpenCV 的跟踪功能,可以用于调试和分析程序。
Ceres DIR:Ceres Solver 的安装目录。
DC1394INCLUDE:DC1394 库的头文件路径。
DC1394 LIBRARY:DC1394 库的链接路径。
EIGEN INCLUDE PATH:Eigen 矩阵库的头文件路径。
ENABLE BUILD HARDENING:启用编译硬化,以增加代码的安全性和可靠性。
ENABLE CCACHE:启用 CCache,用于缓存编译结果以加快重新编译的速度。
ENABLE CONFIG VERIFICATION:启用配置验证,用于确保编译时使用的选项和库的版本是兼容的。
ENABLE FAST MATH:启用快速数学运算选项,以加速程序的运行速度。
ENABLE FLAKE8:启用 Flake8 代码检查工具,用于确保编码符合 Python 代码风格规范。
ENABLE IMPL COLLECTION:启用实现收集,用于收集运行时使用的算法和函数的实现信息。
ENABLE INSTRUMENTATION:启用代码插桩,用于在编译时插入额外的代码以收集性能和调试信息。
ENABLE LTO:启用链接时优化,用于在链接时对代码进行优化以提高性能。
ENABLE NOISY WARNINGS:启用详细的编译警告,用于提醒开发人员代码中的潜在问题。
ENABLE PIC:这个选项用来开启或关闭编译生成位置独立代码(Position Independent Code),这是一种可以使生成的二进制文件能够在内存中被任意位置载入的机制。
ENABLE PYLINT:这个选项用来开启或关闭代码静态检查工具 Pylint 的使用。
ENABLE SOLUTION FOLDERS:这个选项用来开启或关闭在 Visual Studio 中将项目分组为解决方案文件夹的功能。
EXECUTABLE OUTPUT PATH:这个选项用来指定生成可执行文件的输出路径。
Eigen3 DIR:这个选项用来指定 Eigen3 库的安装路径。
GFLAGS INCLUDE DIR:这个选项用来指定 GFlags 库的头文件所在路径。
GFLAGS NAMESPACE:这个选项用来指定 GFlags 库的命名空间。
GLOG INCLUDE DIR:这个选项用来指定 GLog 库的头文件所在路径。
GSTREAMER app LIBRARY:这个选项用来指定 GStreamer 应用库的路径。
GSTREAMER audio LIBRARY:这个选项用来指定 GStreamer 音频库的路径。
GSTREAMER base LIBRARY:这个选项用来指定 GStreamer 基础库的路径。
GSTREAMER glb INCLUDE DIR:这个选项用来指定 GStreamer GL 库的头文件所在路径。
GSTREAMER glb LIBRARY:这个选项用来指定 GStreamer GL 库的路径。
GSTREAMER glibconfig INCLUDE DIR:GStreamer 配置文件所在的目录。
GSTREAMER gobject LIBRARY:GStreamer GObject 库的名称。
GSTREAMER gSt INCLUDE DIR:GStreamer 核心库的头文件目录。
GSTREAIMER gstreamer LIBRARY:GStreamer 库的名称。
GSTREAMER pbutils LIBRARY:GStreamer PlayBack Utilities 库的名称。
GSTREAMER rIf LIBRARY:GStreamer GL 库的名称。
GSTREAMER video LIBRARY:GStreamer Video 库的名称。
Gflags DIR:Google Flags 库所在的目录。
Glog DIR:Google Log 库所在的目录。
HDF5 C LIBRARY:HDF5 C 库的名称。
HDF5 INCLUDE DIRS:HDF5 库的头文件目录。
HDF5 INCLUDE DIRS: HDF5 库的头文件所在目录。
INSTALL CREATE DISTRIB: 是否在安装目录中创建分发包,例如 tarball。
INSTALL C EXAMPLES: 是否安装 C 语言示例程序。
INSTALL PDB: 是否安装调试符号文件(Windows 平台)。
INSTALL PDB COMPONENT EXCLUDE FROM ALL: 指定哪些组件的调试符号文件不需要安装。
INSTALL PYTHON EXAMPLES: 是否安装 Python 示例程序。
INSTALL TESTS: 是否安装测试程序。
LAPACK CBLAS H: 是否启用 CBLAS 头文件。
LAPACK IMPL: 指定 LAPACK 实现方式。
LAPACK INCLUDE DIR: LAPACK 库的头文件所在目录。
LAPACK LAPACKE H: 是否启用 LAPACKE 头文件。
LAPACK LIBRARIES: LAPACK 库的名称。
Lept LIBRARY: Leptonica 库的名称。
MKL ROOT DIR: Intel MKL 库的根目录。
MKL USE SINGLE DYNAMIC LIBRARY: 是否使用单个动态链接库。
MKL WITH OPENMP: 是否启用 OpenMP。
MKL WITH TBB: 是否启用 TBB。
M LIBRARY:M数学库的路径
OGRE DIR:OGRE 3D引擎的路径
ONNXRT ROOT DIR:ONNX Runtime库的路径
OPENCL FOUND:是否找到OpenCL库
OPENCV CMAKE MACRO WIN32 WINNTOPENCV CONFIG FILE INCLUDE DIR:OpenCV配置文件的路径
OPENCV DISABLE FILESYSTEM SUPPORT:是否禁用文件系统支持
OPENCV DNN CUDA:是否使用CUDA加速OpenCV DNN模块
OPENCV DNN OPENCL:是否使用OpenCL加速OpenCV DNN模块
OPENCV DNN OPENVINO:是否使用OpenVINO加速OpenCV DNN模块
OPENCV DNN PERF CAFFE:是否启用Caffe的性能测试
OPENCV DNN PERF CLCAFFE:是否启用OpenCL加速的Caffe性能测试
OPENCV DOWNLOAD PATH:OpenCV下载路径
OPENCV DUMP HOOKS FLOW:是否启用OpenCV函数调用跟踪
OPENCV ENABLE ALLOCATOR STATS:是否启用OpenCV内存分配器统计信息
OPENCV ENABLE ATOMIC LONG LONG:是否启用64位原子操作支持
OPENCV ENABLE MEMALIGN:是否启用OpenCV的内存对齐
OPENCV ENABLE MEMORY SANITIZER:是否启用内存泄漏检测器
OPENCV ENABLE NONFREE:是否启用OpenCV非免费功能
OPENCV EXTRA MODULES PATH:额外的OpenCV模块路径
OPENCV FORCE 3RDPARTY BUILD:强制编译第三方库
OPENCV FORCE PYTHON LIBS:强制使用Python库
OPENCV GAPI GSTREAMER:是否启用OpenCV G-API库和GStreamer插件
OPENCV GAPI GSTREAMER:这些变量用于启用 OpenCV 的 G-API 模块和支持 GStreamer 的 Video I/O 模块。
OPENCV GENERATE PKGCONFIG:生成 pkg-config 文件,用于将 OpenCV 作为库时的链接和编译器选项。
OPENCV GENERATE SETUPVARS:生成 setupvars.sh 或 setupvars.bat 文件,用于在系统环境变量中设置 OpenCV 库的路径,以便在编译和运行应用程序时使用。
OPENCV IPP GAUSSIAN BLUR:启用使用 Intel IPP 库进行高斯模糊的支持。
OPENCV JAVA SOURCE VERSION 和 OPENCV JAVA TARGET VERSION:这些变量用于指定用于编译 OpenCV Java 绑定的 JDK 版本。
OPENCV MATHJAX RELPATH:这个变量指定用于在 OpenCV 文档中渲染数学公式的 MathJax 库的相对路径。
OPENCV MSVC PARALLEL:用于指定 MSVC 构建时要使用的并行工具的数量。
OPENCV PYTHON3 VERSION:用于指定用于构建 OpenCV Python 绑定的 Python3 版本。
OPENCV TIMESTAMP:生成一个时间戳,用于在构建 OpenCV 时唯一标识构建。
OPENCV WARNINGS ARE ERRORS:将 OpenCV 编译器警告视为错误。
OPENEXR INCLUDE PATH 和 OPENEXR ROOT:这些变量指定 OpenEXR 库的路径和头文件路径。
OPJ DISABLE TPSOT FIX:禁用 OpenJPEG 库中的 TPSoT 修复。
OPJ USE THREAD:启用 OpenJPEG 库的多线程支持。
OpenCV HAL DIR 和 OpenEXR DIR:这些变量用于指定 Halide 和 OpenEXR 库的路径。
PARALLEL ENABLE PLUGINS:启用并行处理插件支持。
PROTOBUF UPDATE FILES:指定是否更新 Protobuf 源文件。
PYTHON2 EXECUTABLE:指定 Python 2 可执行文件的路径。
PYTHON2 INCLUDE DIR:指定 Python 2 头文件的路径。
PYTHON2 INCLUDE DIR2:指定 Python 2 的附加头文件路径。
PYTHON2 LIBRARY:指定 Python 2 库的路径。
PYTHON2 LIBRARY DEBUG:指定 Python 2 调试库的路径。
PYTHON2 NUMPY INCLUDE DIRS:指定 NumPy 的头文件路径。
PYTHON2 PACKAGES PATH:指定 Python 2 包的安装路径。
PYTHON3 EXECUTABLE:指定 Python 3 可执行文件的路径。
PYTHON3 INCLUDE DIR:指定 Python 3 头文件的路径。
PYTHON3 INCLUDE DIR2:指定 Python 3 的附加头文件路径。
PYTHON3 LIBRARY:指定 Python 3 库的路径。
PYTHON3 LIBRARY DEBUG:指定 Python 3 调试库的路径。
PYTHON3 NUMPY INCLUDE DIRS:指定 NumPy 的头文件路径。
PYTHON3 PACKAGES PATH:指定 Python 3 包的安装路径。
TBB DIR:指定 TBB 的根目录。
TBB ENV INCLUDE:指定 TBB 头文件的路径。
TBB ENV LIB:指定 TBB 库的路径。
TBB ENV LIB DEBUG:指定 TBB 调试库的路径。
TESSERACT DIR:指定 Tesseract 库的根目录。
TESSERACT INCLUDE DIR:指定 Tesseract 头文件的路径。
TESSERACT LIBRARY:指定 Tesseract 库的路径。
USE WIN32 FILEIO:如果设置为ON,则使用Win32文件IO功能,而不是POSIX文件IO功能
VTK DIR:指定VTK库的安装目录
WITH 1394:如果设置为ON,则启用IEEE 1394功能
WITH ADE:如果设置为ON,则启用ADE库
WITH ARITH DEC:如果设置为ON,则启用在DEC算法中使用的算术操作
WITH ARITH ENC:如果设置为ON,则启用在ENC算法中使用的算术操作
WITH CLP:如果设置为ON,则启用COIN-OR线性规划库(CLP)
WITH CUBLAS:如果设置为ON,则启用NVIDIA的CUBLAS库,用于在GPU上进行矩阵操作
WITH CUDA:如果设置为ON,则启用CUDA支持
WITH CUDNN:如果设置为ON,则启用NVIDIA的CUDNN库,用于在GPU上进行深度神经网络操作
WITH CUFFT:如果设置为ON,则启用NVIDIA的CUFFT库,用于在GPU上进行快速傅里叶变换
WITH DIRECTX:如果设置为ON,则启用DirectX功能
WITH DSHOW:如果设置为ON,则启用DirectShow功能
WITH EIGEN:如果设置为ON,则启用EIGEN库,用于进行矩阵计算
WITH FFMPEG:如果设置为ON,则启用FFMPEG库,用于处理多媒体文件
WITH FREETYPE:如果设置为ON,则启用Freetype库,用于处理字体文件
WITH GDAL: 启用GDAL库支持。
WITH GDCM: 启用GDCM库支持。
WITH GSTREAMER: 启用GStreamer库支持。
WITH HALIDE: 启用Halide库支持。
WITH HPX: 启用HPX库支持。
WITH IMGCODEC HDR: 启用高动态范围(HDR)图像编解码器支持。
WITH IMGCODEC PFM: 启用PFM图像编解码器支持。
WITH IMGCODEC PXM: 启用PXM图像编解码器支持。
WITH IMGCODEC SUNRASTER: 启用Sun Raster图像编解码器支持。
WITH IPP: 启用Intel Performance Primitives库支持。
WITH ITT: 启用Intel Threading Tools支持。
WITH JASPER: 启用JasPer库支持。
WITH JPEG: 启用JPEG库支持。
WITH LAPACK: 启用LAPACK库支持。
WITH LIBREALSENSE: 启用Intel RealSense摄像头支持。
WITH MATLAB: 启用MATLAB引擎支持。
WITH MFX: 启用Intel Media SDK支持。
WITH MSMF: 启用Microsoft Media Foundation支持。
WITH MSMF DXVA: 启用DirectX Video Acceleration (DXVA)支持。
WITH NVCUVID: 启用NVIDIA Video Decoding API支持。
WITH OAK: 启用OpenCV AI Kit (OAK)支持。
WITH ONNX: 启用ONNX Runtime支持。
WITH OPENCL: 启用OpenCL支持。
WITH OPENCLAMDBLAS: 指定是否启用 AMD OpenCL BLAS 库。如果启用,则会链接到 AMD OpenCL BLAS 库并使用其实现。
WITH OPENCLAMDFFT: 指定是否启用 AMD OpenCL FFT 库。如果启用,则会链接到 AMD OpenCL FFT 库并使用其实现。
WITH OPENCL D3D11 NV: 指定是否启用 NVIDIA OpenCL/DirectX11 互操作支持。如果启用,则会使用 NVIDIA OpenCL/DirectX11 互操作扩展进行互操作。
WITH OPENCL SVM: 指定是否启用 OpenCL SVM(Shared Virtual Memory,共享虚拟内存)支持。如果启用,则会启用 OpenCL SVM。
WITH OPENEXR: 指定是否启用 OpenEXR 库支持。如果启用,则会链接到 OpenEXR 库并使用其实现。
WITH OPENGL: 指定是否启用 OpenGL 支持。如果启用,则会使用 OpenGL 进行图像显示和渲染。
WITH OPENJPEG: 指定是否启用 OpenJPEG 库支持。如果启用,则会链接到 OpenJPEG 库并使用其实现。
WITH OPENMP: 指定是否启用 OpenMP 支持。如果启用,则会使用 OpenMP 进行多线程并行计算。
WITH OPENNI: 指定是否启用 OpenNI 库支持。如果启用,则会链接到 OpenNI 库并使用其实现。
WITH OPENNI2: 指定是否启用 OpenNI2 库支持。如果启用,则会链接到 OpenNI2 库并使用其实现。
WITH OPENVINO: 指定是否启用 OpenVINO(Open Visual Inference and Neural network Optimization)支持。如果启用,则会使用 OpenVINO 进行深度学习推理。
WITH OPENVX: 指定是否启用 OpenVX(Open Computer Vision Acceleration)支持。如果启用,则会使用 OpenVX 库进行计算机视觉加速。
WITH PLAIDML: 开启使用PlaidML加速库加速计算,PlaidML是一个用于机器学习的跨平台、开源的加速库。
WITH PNG: 开启PNG格式图片支持。
WITH PROTOBUF: 开启Google Protocol Buffers支持,可以用于序列化结构化的数据,并且可以跨语言使用。
WITH PVAPI: 开启Point Grey Vision Library支持,Point Grey是一家专业的摄像机生产商,提供一套用于摄像机控制的开发库。
WITH QT: 开启QT GUI支持,QT是一个跨平台的GUI开发框架,可以用于开发图形界面应用程序。
WITH QUIRC: 开启QR码解码器支持,Quirc是一个用于解码二维码的库。
WITH TBB: 开启Intel Threading Building Blocks支持,TBB是一个C++并行计算库,可以用于在多核CPU上加速计算。
WITH TESSERACT: 开启Tesseract OCR支持,Tesseract是一个开源OCR引擎,可以用于文字识别。
WITH TIFF: 开启TIFF格式图片支持。
WITH TIMVX: 开启Tensilica Imaging Library支持,TIMVX是一个基于Tensilica DSP架构的图像处理库。
WITH UEYE: 开启IDS Imaging Development Systems支持,IDS是一家摄像机生产商,提供一套用于摄像机控制的开发库。
WITH VTK: 开启VTK支持,VTK是一个用于科学计算和可视化的开源库。
WITH VULKAN: 开启Vulkan支持,Vulkan是一个跨平台的低级图形API,可以用于编写高性能的图形应用程序。
WITH WEBNN: 开启Web Neural Network API支持,WebNN是一个浏览器端的神经网络API,可以用于在浏览器中运行神经网络模型。
WITH WEBP: 开启WebP格式图片支持,WebP是一种由Google开发的图像格式,可以用于压缩图片。
WITH WIN32U 是一个 CMake 变量,它用于启用对 Windows Unicode API 的支持。如果启用了此选项,则编译生成的代码将使用 Unicode 版本的 Windows API。
WITH XIMEA 是一个 CMake 变量,它用于启用对 XIMEA 摄像头的支持。如果启用了此选项,则编译生成的代码将包括 XIMEA 摄像头的支持。

opencv编译cuda库和扩展库时需要勾选以下变量:

  • 勾选WITH_TBB

    avatar

  • 勾选CUDA相关:

    avatar

  • 勾选BUILD_CUDA_STUBS:
    作用是控制在构建CUDA程序时是否生成CUDA的桩文件(Stubs),在CUDA编程中,CPU和GPU之间的通信需要通过Host和Device代码之间的数据传输来实现。当使用CUDA编译器编译CUDA程序时,会生成两个二进制文件,一个是Host程序(CPU上运行的代码),另一个是Device程序(在GPU上运行的代码)。这两个二进制文件需要通过一些框架代码进行连接,以便在运行时能够正常交互。CUDA的桩文件就是这些框架代码的一部分,它们提供了一些标准函数的定义和实现,例如CUDA Runtime API、CUDA Driver API等。这些桩文件允许Host程序和Device程序在编译时正确连接并生成可执行文件。在使用CMake构建CUDA程序时,可以通过设置BUILD_CUDA_STUBS变量来控制是否生成CUDA的桩文件。默认情况下,CMake会根据当前使用的CUDA版本自动决定是否需要生成桩文件。需要注意的是,如果不生成CUDA桩文件,则在编译时需要手动链接CUDA Runtime库或CUDA Driver库,否则会出现未定义符号的错误。

  • 勾选OPENCV_DNN_STUBS:
    用于控制是否编译 OpenCV 深度学习模块的框架代码和抽象层,包括 OPENCV_DNN_STUBS.cpp 和 OPENCV_DNN_STUBS.hpp 两个文件。具体而言,如果您将 OPENCV_DNN_STUBS 变量设置为 ON,CMake 将编译 OPENCV_DNN_STUBS.cpp 和 OPENCV_DNN_STUBS.hpp 文件,并将生成包含深度学习模块的完整 OpenCV 库。如果您将 OPENCV_DNN_STUBS 变量设置为 OFF,则不会编译这些文件,深度学习模块也不会被包含在生成的 OpenCV 库中。值得注意的是,如果您想要使用深度学习模块中的特定功能,例如针对某个特定深度学习框架的支持,您可能需要安装相应的插件或模块,并将相应的 CMake 变量设置为 ON,以确保相关功能被正确编译和包含在 OpenCV 库中。

  • 勾选WITH_CUDA:
    用于控制 OpenCV 是否启用 CUDA 加速功能,如果 WITH_CUDA 变量设置为 ON,CMake 将编译包含 CUDA 加速功能的 OpenCV 库,并将相应的 CUDA 相关文件链接到生成的库中。这样,在使用 OpenCV 库进行图像处理、计算机视觉等任务时,可以利用 CUDA 加速来获得更快的计算速度。需要注意的是,启用 CUDA 加速功能需要您的计算机硬件支持 NVIDIA GPU,并且需要安装相应的 CUDA 工具包和驱动程序。此外,还需要安装与 CUDA 版本相匹配的 cuDNN 库,以获得更好的性能。如果您没有安装 CUDA 相关工具和库,或者您的计算机硬件不支持 CUDA,那么将 WITH_CUDA 变量设置为 ON 是没有意义的。

  • 勾选BUILD_opencv_cudaarithm:
    用于控制 OpenCV 是否编译包含 CUDA 加速的算术运算功能的模块,例如加法、减法、乘法、除法、取模等。如果 BUILD_opencv_cudaarithm 变量设置为 ON,CMake 将编译包含 CUDA 加速的算术运算模块,并将相应的 CUDA 相关文件链接到生成的 OpenCV 库中。这样,在使用 OpenCV 库进行图像处理、计算机视觉等任务时,可以利用 CUDA 加速来获得更快的算术运算速度。需要注意的是,启用 BUILD_opencv_cudaarithm 变量会增加 OpenCV 库的编译时间和生成的库文件的大小。因此,如果您不需要使用 CUDA 加速的算术运算功能,可以将 BUILD_opencv_cudaarithm 变量设置为 OFF,以减少编译时间和库文件大小。

  • 勾选BUILD_opencv_cudabgsegm:
    用于控制 OpenCV 是否编译包含 CUDA 加速的背景分割算法模块,例如 MOG、MOG2 和 GMG 算法。如果 BUILD_opencv_cudabgsegm 变量设置为 ON,CMake 将编译包含 CUDA 加速的背景分割算法模块,并将相应的 CUDA 相关文件链接到生成的 OpenCV 库中。这样,在使用 OpenCV 库进行背景分割任务时,可以利用 CUDA 加速来获得更快的计算速度。需要注意的是,启用 BUILD_opencv_cudabgsegm 变量会增加 OpenCV 库的编译时间和生成的库文件的大小。因此,如果您不需要使用 CUDA 加速的背景分割算法模块,可以将 BUILD_opencv_cudabgsegm 变量设置为 OFF,以减少编译时间和库文件大小。

  • 勾选BUILD_opencv_cudacodec:
    用于控制 OpenCV 是否编译包含 CUDA 加速的视频编解码器模块,例如 H.264、H.265 和 MPEG-4 等。如果 BUILD_opencv_cudacodec 变量设置为 ON,CMake 将编译包含 CUDA 加速的视频编解码器模块,并将相应的 CUDA 相关文件链接到生成的 OpenCV 库中。这样,在使用 OpenCV 库进行视频编解码任务时,可以利用 CUDA 加速来获得更快的计算速度。另外需要注意的是,启用 BUILD_opencv_cudacodec 变量会增加 OpenCV 库的编译时间和生成的库文件的大小。因此,如果您不需要使用 CUDA 加速的视频编解码器模块,可以将 BUILD_opencv_cudacodec 变量设置为 OFF,以减少编译时间和库文件大小。

  • 勾选BUILD_opencv_cudafeatures2d:
    用于控制 OpenCV 是否编译包含 CUDA 加速的特征提取和描述符匹配模块,例如 SURF、SIFT 和 ORB 等。如果 BUILD_opencv_cudafeatures2d 变量设置为 ON,CMake 将编译包含 CUDA 加速的特征提取和描述符匹配模块,并将相应的 CUDA 相关文件链接到生成的 OpenCV 库中。这样,在使用 OpenCV 库进行特征提取和描述符匹配任务时,可以利用 CUDA 加速来获得更快的计算速度。需要注意的是,启用 BUILD_opencv_cudafeatures2d 变量会增加 OpenCV 库的编译时间和生成的库文件的大小。因此,如果您不需要使用 CUDA 加速的特征提取和描述符匹配模块,可以将 BUILD_opencv_cudafeatures2d 变量设置为 OFF,以减少编译时间和库文件大小。

  • 勾选BUILD_opencv_cudafilters:
    用于控制 OpenCV 是否编译包含 CUDA 加速的图像滤波器模块,例如高斯滤波、中值滤波和双边滤波等。如果 BUILD_opencv_cudafilters 变量设置为 ON,CMake 将编译包含 CUDA 加速的图像滤波器模块,并将相应的 CUDA 相关文件链接到生成的 OpenCV 库中。这样,在使用 OpenCV 库进行图像滤波任务时,可以利用 CUDA 加速来获得更快的计算速度。需要注意的是,启用 BUILD_opencv_cudafilters 变量会增加 OpenCV 库的编译时间和生成的库文件的大小。因此,如果您不需要使用 CUDA 加速的图像滤波器模块,可以将 BUILD_opencv_cudafilters 变量设置为 OFF,以减少编译时间和库文件大小。

  • BUILD_opencv_cudaimgproc:
    控制是否编译包含 CUDA 加速的图像处理模块,例如 resize、cvtColor 和 warpPerspective 等。

  • BUILD_opencv_cudalegacy:
    控制是否编译包含 CUDA 加速的旧版本模块,例如 cv::gpu::CascadeClassifier 和 cv::gpu::ORB 等。

  • BUILD_opencv_cudaobjdetect:
    控制是否编译包含 CUDA 加速的目标检测模块,例如 cv::cuda::HOG 和 cv::cuda::CascadeClassifier 等。

  • BUILD_opencv_cudaoptflow:
    控制是否编译包含 CUDA 加速的光流估计模块,例如 cv::cuda::FarnebackOpticalFlow 和 cv::cuda::BroxOpticalFlow 等。

  • BUILD_opencv_cudastereo:
    控制是否编译包含 CUDA 加速的立体视觉模块,例如 cv::cuda::StereoBM 和 cv::cuda::StereoSGBM 等。

  • BUILD_opencv_cudawarping:
    控制是否编译包含 CUDA 加速的图像变换模块,例如 cv::cuda::warpAffine 和 cv::cuda::warpPerspective 等。

  • 两项数学加速选项也勾选:
    CUDA_FAST_MATH
    ENABLE_FAST_MATH

  • 取消选择 java 的编译选项

  • avatar

  • 勾选nonfree

    avatar

  • 取消勾选TEST,加速编译

    avatar

  • 勾选 BUILD_opencv_world 最终只生成一个动态链接库方便使用

    avatar

  • 在 OPENCV_EXTRA_MODULES_PATH 中填入 OpenCV_contrib 解压文件夹 modules 的路径

    avatar

  • 取消选择 OPENCV_GENERATE_SETUPVARS

    avatar

再次点击configure,完成后再次搜索cuda,配置CUDA_ARCH_BIN中将显卡的算力内容改成自己显卡的算力,保留5.0;5.2;6.0;6.1;7.0;7.5;8.0;8.6以供各种架构使用。

再次Configure,确保没有红色报错,然后点Generate

打开生成的 OpenCV.sln 文件,找到项目 INSTALL 右击生成,可能会花费很久的时间。

至此编译完成,本地使用时包含头文件,然后添加连接器,最后将dll复制到目标路径即可。