news 2026/2/24 5:38:52

编译opencv4.12+CUAD12.8+Qt6.8.3 | cmake3.27.9+VS2022 | 以及解决各种编译疑难杂症

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
编译opencv4.12+CUAD12.8+Qt6.8.3 | cmake3.27.9+VS2022 | 以及解决各种编译疑难杂症

一、前期准备

1、软件版本与下载

名称版本下载链接
opencv4.1.24.12.0
opencv_contrib4.1.24.12.0
cmake3.27.9
CUDA11.812.8
cudnn
VS20192022
Qt6.5.36.8.3

二、编译

1、配置编译器

2、编译选项:第一次Configure

2.0 CMAKE_BUILD_TYPE

2.1 BUILD_JAVA

在搜索框搜索java,查看配置编译java接口的选项,不用java可以取消勾选带java的选项:BUILD_JAVABUILD_opencv_java_bindings_generator等;我这里不用java所以全部取消勾选。

2.2 BUILD_opencv_python3

在搜索框搜索python,查看配置编译python接口的选项,不用python可以取消勾选带python的选项:BUILD_opencv_python3BUILD_opencv_python_bindings_generatorBUILD_opencv_python_tests

2.3 WITH_CUDA, WITH_OPENMP, WITH_TBB

在搜索框搜索cuda,查看配置cuda的选项,不用cuda可以取消勾选带cuda的选项:WITH_CUDABUILD_CUDA_STUBSOPENCV_DNN_CUDA;我这里需要使用,所以全勾选。

2.4 OPENCV_EXTRA_MODULES_PATH

在搜索框搜索extraOPENCV_EXTRA_MODULES_PATH项里输入拓展模块(opencv_contrib-4.x.x/modules)的路径

2.5 OPENCV_ENABLE_NONFREE

OPENCV_ENABLE_NONFREE是 OpenCV 配置中的一个选项,用于启用非自由(non-free)算法,这些算法可能受到专利保护或有其他限制。在 OpenCV 3.x 版本中,这些算法被移动到了opencv_contrib模块中。要启用这些算法,你需要在编译 OpenCV 时设置OPENCV_ENABLE_NONFREE选项为ON

以下是启用非自由模块的一般步骤:

确保你已经下载了 OpenCV 的主仓库和 opencv_contrib 模块,并且它们是相同版本的。

使用 CMake 配置你的 OpenCV 构建。在 CMake 的配置界面中,你需要设置OPENCV_EXTRA_MODULES_PATH指向opencv_contrib模块的modules目录。

2.6 BUILD_opencv_world

在搜索框搜索world,勾选BUILD_opencv_world将会构建生成一个.dllLunix下是.so文件),而不会生成多个模块的.dll

2.7 BUILD_TEST

取消BUILD_TESTBUILD_PERF_TESTSINSTALL_TESTS等带有test关键词的选项,这些选项没有用,编译时还容易报错

2.8 OPENCV_FORCE_3RDPARTY_BUILD

设置OPENCV_FORCE_3RDPARTY_BUILD=ON时,OpenCV 会尝试构建所有需要的第三方库,即 OpenCV 源码文件夹下的opencv-4.10.0/3rdparty,而不是去查找系统中已经安装的版本。这可能会导致构建过程变慢,因为编译第三方库需要额外的时间。
通常系统安装的各种第三方软件库不一定匹配OpenCV的版本,所以建议勾选。

2.9 WITH_QT

WITH_QT是否使用 QT 对 OpenCV 的 GUI 进行编译;Windows 下默认启用WITH_WIN32UI,使用的是WinAPI的标准GUI API,Linux下是启用WITH_GTK。而使用Qt支持编译的OpenCV可以实现高级的h i g h g u i highguihighgui界面。

使用 Qt 要同时打开WITH_OPENGL

2.10 CMAKE_INSTALL_PREFIX

在搜索框搜索CMAKE_INSTALL_PREFIX,输入最终编译后动态库和头文件的存放目录,我这里是"E:/opencv/build/opencv_4.1.2/install"

2.11 点击Configure

点击Configure,等待绿色进度条完成。

2.12 注意

windows下填入的路径中要使用'/',而不能使用'\',否则会报错

3、编译选项:第二次Configure

在第一次Configure完成且无报错后,编译选项会根据你的勾选或多或少的增加,这些增加的编译选项需要检查与配置。

3.1 WITH_CUDA

如果需要使用cuda,在搜索框搜索cuda,查看配置cuda的选项。前文中我勾选了WITH_CUDABUILD_CUDA_STUBSOPENCV_DNN_CUDA,此时出现了很多红色的带有CUDA_xxxxxx_cudaxxxCUDNN_xxx的配置选项,这些选项需要认真检查是否是你之前安装CUDA的路径;一般来说,你在系统变量中正确配置了CUDA的路径,cmake都会帮你找到。

其中,需要注意CUDA_ARCH_BIN这个选项。这个选项与你显卡的计算能力有关,一般cmake会把你显卡兼容的计算能力版本号都列出来,但并不是所有的版本都是你需要的。因为编译时opencv会把每个版本都编译一遍,这是非常耗时的,所以我们只用保留一个(或某几个)我们想要的版本号就行。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/20 14:48:11

GraphQL字段别名的秘密武器:PHP环境下高效数据查询的终极方案

第一章:GraphQL字段别名的核心概念与PHP集成背景GraphQL 字段别名允许客户端在查询时为返回的字段指定自定义名称,从而避免响应字段冲突,并提升数据结构的可读性与灵活性。在复杂的查询场景中,同一字段可能需要多次调用但携带不同…

作者头像 李华
网站建设 2026/2/23 7:50:47

最近在折腾六层电梯控制系统,用MCGS7.7触摸屏和三菱FX3U PLC搞联机调试。这俩设备通过COM4口通讯,中间踩了不少坑,把关键配置和程序逻辑拎出来说说

6六层电梯MCGS7.7和三菱FX3U系列PLC联机运行程序3,带io表新,开门延时6秒,COM4口通讯 通讯口设置这块儿,三菱FX3U的编程口自带RS422转成了COM4的RS232。在GX Works2里直接配置通讯参数的时候,记得把D8120寄存器设成H00…

作者头像 李华
网站建设 2026/2/20 15:50:36

实物资产代币化(RWA)出海指南:跨越从香港到全球的合规三重门

监管分割线:“境内禁止、境外放行”下的出海跳板 在实物资产代币化(RWA)的全球热潮中,一条“境内禁止、境外放行”的监管分割线清晰浮现。这一格局使得香港成为国内从业者出海的核心跳板。然而,从香港走向更广阔的海外…

作者头像 李华
网站建设 2026/2/19 18:27:54

产品经理如何拥抱AI大模型:从入门到实战的全面指南

本文针对产品经理,探讨了在AI大模型时代如何保持竞争力。文章首先强调了产品经理需具备的核心能力,包括理解用户需求、把握市场趋势等;其次详细阐述了AI大模型为产品经理带来的五大价值,如提升用户洞察、实现个性化推荐等&#xf…

作者头像 李华
网站建设 2026/2/20 11:49:00

PHP 8.6扩展性能优化秘籍:提升执行效率300%的底层策略

第一章:PHP 8.6 扩展开发概述PHP 8.6 作为 PHP 语言持续演进的重要版本,进一步优化了内核性能并增强了扩展开发的灵活性与稳定性。扩展开发允许开发者使用 C 语言直接与 Zend 引擎交互,实现高性能功能模块,适用于底层系统集成、算…

作者头像 李华
网站建设 2026/2/16 23:56:04

SoapUI接口测试脚本开发:从基础到进阶实践

接口测试在现代化软件测试体系中的关键地位 随着微服务架构和分布式系统的普及,接口测试已成为保证软件质量的核心环节。根据业界统计数据,现代软件系统中超过70%的功能交互通过接口实现,这使得接口测试的覆盖率直接影响产品的稳定性和可靠性…

作者头像 李华