Windows11环境下RTX3060的opencv4.10编译环境

Windows11环境下RTX3060的opencv4.10编译环境

环境

系统 windows11
visual studio 11.8
python 3.9.x
opencv 4.10
opencv_contrib for opencv4.10
visual studio vs2019
CMake 3.26.0

下面提供所有软件的安装包的百度网盘地址:
链接:https://pan.baidu.com/s/1Vk52DMUiqDJx4l9KhTkdlw
提取码:6vvq

CUDA版本

CUDA选择,可用的CUDA版本有很多,这里选择CUDA11.8,不同的显卡有不同的CUDA兼容,可以查看最大兼容版本,这里就不放链接了

关于OpenCV与CUDA的兼容性如下(下面复制备份):

  • 版本匹配与环境配置

    CUDA与OpenCV版本兼容性‌

    OpenCV各版本对CUDA的支持存在差异,例如OpenCV 4.5.4需搭配CUDA 10.0‌2,而较新的OpenCV 4.8.0需使用更高版本CUDA‌。

    需注意部分模块(如级联检测器)可能因CUDA版本更新而不再支持‌。

    ‌OpenCV 版本 CUDA版本

    • 4.5.x‌ 推荐 CUDA 11.x 及以下版本。但需注意纹理功能兼容性(如 CUDA 12.0 可能因纹理接口变更导致编译失败)‌。
    • 4.6.x‌ 不兼容 CUDA 12.0+,需搭配 CUDA 11.x 或更早版本‌。
    • 4.7.x 及以上‌ 支持 CUDA 12.0+,建议优先选择 OpenCV 4.7+ 搭配 CUDA 12.0+ 以解决接口不匹配问题‌。
    • 4.8.x‌ 推荐 CUDA 11.x 或 12.x,需结合具体功能需求选择‌。
    • 4.10.x 推荐 CUDA 11.x 或 12.x,需结合具体功能需求选择‌

    验证CUDA环境时,可通过nvidia-smi命令查看当前驱动支持的CUDA版本‌。

  • 编译与环境要求

    1、‌编译器兼容性‌

    CUDA 8.0+ 需搭配 VS2012 及以上版本‌5;CUDA 12.0+ 建议使用 VS2019,避免使用 VS2022(因 CMake 生成器可能不支持)‌。
    ‌2、OpenCV依赖库配置‌

    CMake参数‌:需启用WITH_CUDA选项,并指定OpenCV主仓库与opencv_contrib模块路径‌。
    ‌3、硬件与驱动‌

    NVIDIA 显卡需支持 CUDA,且安装与 CUDA 版本匹配的驱动程序‌。
    显卡型号 推荐驱动版本 最高支持CUDA版本
    ‌40系显卡‌ ≥535.86.05 CUDA 12.3‌4
    ‌30系显卡‌ ≥470.82.01 CUDA 11.7‌5
    ‌20系显卡‌ ≥450.80.02 CUDA 11.0‌7

‌注意事项‌:

驱动版本需≥CUDA工具包的最低要求(如CUDA 12.x需驱动≥535.86.05)‌。
‌多版本共存‌:可通过/usr/local/cuda-xx.x路径管理不同CUDA版本,避免环境变量冲突‌。
  • 常见问题与解决

    ‌1、编译报错示例‌
    若出现 common.hpp 纹理相关错误(如 OpenCV 4.6.0 + CUDA 12.0),需升级至 OpenCV 4.7+ 或降级 CUDA 版本‌。
    ‌2、多版本冲突‌
    安装多版本 OpenCV 时(如同时存在 3.x 和 4.x),需指定不同安装路径以避免 CUDA 依赖冲突‌。
    ‌3、链接器错误‌
    若提示未解析的外部符号,需检查是否遗漏 CUDA 相关库(如 cudart)或排除冲突的预编译库(如 world 模块)‌。

  • OpenCV中CUDA加速功能

    OpenCV中可通过CUDA加速的模块包括:
    图像处理(灰度转换、滤波等)
    视频编解码
    光流法
    对象检测(部分模型)
    双目视觉处理‌。

参考链接:CUDA编程之OpenCV与CUDA结合使用

​ 执行nvcc --version显示如下即可

nvcc: NVIDIA (R) Cuda compiler driver

Copyright (c) 2005-2022 NVIDIA Corporation

Built on Wed\_Sep\_21\_10:41:10\_Pacific\_Daylight\_Time\_2022

Cuda compilation tools, release 11.8, V11.8.89

Build cuda\_11.8.r11.8/compiler.31833905\_0

Cudnn

​ CUdnn的选择最简单,随便找一个兼容的就行,解压后把bin等文件夹复制到C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.8路径下

​ 运行C:\\Program Files\\NVIDIA GPU Computing Toolkit\\CUDA\\v11.8\\extras\\demo\_suite下的bandwidthTestdeviceQuery两个文件,显示Pass即可

OpenCV

​ OpenCV版本选择,选择了4.10比较新的版本,但是最高支持python3.9,因此在安装miniconda的时候我选择了默认3.9版本的miniconda,这个可以去镜像网站找

​ 镜像站:Anaconda

OpenCV Contrib

​ OpenCV Contrib选择,选择适配OpenCV4.10的

Visual Studio

​ Visual Studio 安装的2019版,具体安装模块自己选择。

CMake

​ CMake选择3.26.0

MiniConda

​ Python选择安装默认版本为python3.9(清华镜像)的miniconda

​ 上述软件安装完成后参考OpenCV+Cuda编译的保姆级教程进行编译安装即可

​ 总的来说,就是要选对cuda版本,以及opencv4.10最高支持python3.9

​ 原本使用vs2022对应cmake3.26,可是在后续编译的时候无法编译,于是切回2019。

后续问题方案

问题一

Found NVCUVID: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/lib/x64/nvcuvid.lib
Found NVCUVENC: C:/Program Files/NVIDIA GPU Computing Toolkit/CUDA/v11.8/lib/x64/nvencodeapi.lib
CUDA detected: 11.8
CMake Error at cmake/OpenCVDetectCUDAUtils.cmake:297 (list):
list GET given empty list
Call Stack (most recent call first):
cmake/OpenCVDetectCUDA.cmake:76 (ocv_set_cuda_arch_bin_and_ptx)
cmake/OpenCVFindLibsPerf.cmake:46 (include)
CMakeLists.txt:812 (include)

​ 去官网查找显卡的计算能力(笔记本30系为8.6),添加cuda架构

​ 如果在终端cmake,可以添加

-D CUDA_ARCH_BIN=8.6 -D CUDA_ARCH_PTX=8.6

​ 如果使用cmake-gui,可以在configure后,点击add entry,

​ name 分别输入CUDA_ARCH_BIN、CUDA_ARCH_PTX,type选择string,value输入你的显卡计算能力。

​ 注意这里可能会失效,输入后查询后看看是否还有8.6

​ 原文链接:Cuda CMake错误: list GET given empty list

问题二

​ 上面的问题处理完后,会出现cudacodec的相关问题,以及setupvars的相关问题,这里没有截图,解决方法如下:

WITH\_NVCUVENCWITH\_NVCUVID以及OPENCV_GENERATE_SETUPVARS三个选项取消勾选

​ 前两个也可以选择安装那个缺少的SDK来进行解决,看你是否需要那个加速。

​ 原文链接:如何去掉cmake编译OpenCV时的Cmake Warning:“OpenCVGenSetupVars.cmake:54”

posted @ 2025-07-10 00:58  BuerH  阅读(230)  评论(0)    收藏  举报