展开菜单
首页 精品内容 本月促销 装机必备 Windows macOS软件 IOS软件 Android AI PDF教程 专题
全部分类

当前位置:

首页 > 编程开发 > OpenCV4.7+CUDA11.2+Python3.9.x环境搭建的实现步骤

OpenCV4.7+CUDA11.2+Python3.9.x环境搭建的实现步骤

目录 准备工作 CMake 编译 VS 编译 验证 常见问题解决 附录:CMake 配置日志 OpenCV 作为计算机视觉领域最常用的开源库,早已覆盖了从图像处理到深度学习推理的方方面面。它支持 C++、Python、Ja va 等多种语言,而 Python 接口(即 OpenCV-Python)更

目录

  1. 准备工作
  2. CMake 编译
  3. VS 编译
  4. 验证
  5. 常见问题解决
  6. 附录:CMake 配置日志

OpenCV 作为计算机视觉领域最常用的开源库,早已覆盖了从图像处理到深度学习推理的方方面面。它支持 C++、Python、Ja va 等多种语言,而 Python 接口(即 OpenCV-Python)更是让数据科学家们爱不释手。不过,纯 CPU 运算在大量图像数据面前往往力不从心。好在 OpenCV 的 GPU 模块(基于 CUDA 编写)可以直接调用 NVIDIA 显卡的并行计算能力,让图像处理速度提升一个数量级。

然而,把 OpenCV 的 CUDA 支持编译到 Python 环境里,并不是一件点几下鼠标就能搞定的事。从源码编译到配置路径,再到解决各种离奇报错,每一步都可能让人想摔键盘。本文就把整个流程拆开揉碎,从硬件检测到最终验证,帮你避开所有常见的坑。

Ⅰ、准备工作

硬件环境

  • 需要一张 NVIDIA 显卡(N 卡),这是前提条件。

软件环境

  1. 下载 OpenCV 源码:opencv-4.7.0.tar.gz
    • 下载地址:OpenCV Releases
  2. 下载 OpenCV Contrib 源码:opencv_contrib-4.7.0.zip
    • Gitee 镜像:qianjide/opencv_contrib
    • GitHub 官网(若无法访问):opencv/opencv_contrib

目录结构说明:把代码解压到指定目录(例如 E:\code\external\opencv47)。

重要提示:源代码目录下必须事先拷贝好 .cache 文件夹,以避免编译时下载失败。

  1. 安装 CMake:推荐版本 cmake-3.26.0-windows-x86_64.msi。
  2. 安装 Anaconda:推荐 Anaconda3-2022.10-Windows-x86_64.exe。
  3. 安装 CUDA 开发工具包:经过对多个 CUDA SDK 版本的测试,编译结果如下表:
CUDA 版本OpenCV 4.7.0OpenCV 4.10.0OpenCV 4.12.0
cuda-v11.2 & cudnn8.1.0✔❌❌
cuda-v12.4 & cudnn8.9.7❌✔✔
cuda-v12.6 & cudnn8.9.7❌✔✔
  1. 安装 Visual Studio 2019。

Ⅱ、CMake 编译

1. 打开 cmake-gui

安装好 CUDA 和 Anaconda 后,打开 CMake 界面,设置 OpenCV 源码路径(Source Code)和构建路径(Build)。

注意:

  • 如果要编译 Anaconda 内非默认虚拟环境的 Python,建议先暂时重命名 base 环境下的 python.exe 和 libs/python312.lib,防止 CMake 错误识别。
  • 如果本地安装了多个版本的 CUDA SDK,需要先将环境变量 CUDA_PATH 等设置成当前要编译的 CUDA 版本。

第一次点击 Configure,选择 Visual Studio 16 2019 和 x64 架构,点击 Finish。第一次编译完成后,进行以下配置:

  1. 编译 World 模块:在 Search 框搜 world,勾选 BUILD_opencv_world。这将把所有 OpenCV 库编译在一起,无需单独添加每个小模块。
  2. 启用非自由算法:在 Search 框搜 NON,勾选 OPENCV_ENABLE_NONFREE。

2. 设置 Python 路径

此步骤旨在将 CUDA 版本的 OpenCV 安装到 Python 环境中。

  1. 构建 Python 绑定:在 Search 框搜 BUILD,勾选 BUILD_opencv_python3(若搜索不到需手动添加)。

环境确认:确认当前使用的 Python 环境(如 Anaconda base 或自定义虚拟环境)已安装 numpy(编译必需):

conda list
pip3 install numpy

手动设置路径:由于虚拟环境可能未添加到系统环境变量,CMake 可能无法自动找到 numpy 头文件等路径。需在 CMake 界面手动设置以下变量(以 Python 3.11 和 3.8 为例):

  • Python 3.11 示例:

    • PYTHON3_EXECUTABLE: D:/tools/anaconda3/envs/py3_11/python.exe
    • PYTHON3_INCLUDE_DIR: D:/tools/anaconda3/envs/py3_11/include
    • PYTHON3_LIBRARY: D:/tools/anaconda3/envs/py3_11/libs/python311.lib
    • PYTHON3_NUMPY_INCLUDE_DIRS: D:/tools/anaconda3/envs/py3_11/Lib/site-packages/numpy/core/include (低版本 numpy) 或 .../numpy/_core/include (高版本 numpy)
    • PYTHON3_PACKAGES_PATH: D:/tools/anaconda3/envs/py3_11/Lib/site-packages
  • Python 3.8 示例:

    • PYTHON3_EXECUTABLE: D:/tools/anaconda3/envs/py3_8/python.exe
    • PYTHON3_INCLUDE_DIR: D:/tools/anaconda3/envs/py3_8/include
    • PYTHON3_LIBRARY: D:/tools/anaconda3/envs/py3_8/libs/python38.lib
    • PYTHON3_NUMPY_INCLUDE_DIRS: D:/tools/anaconda3/envs/py3_8/Lib/site-packages/numpy/core/include
    • PYTHON3_PACKAGES_PATH: D:/tools/anaconda3/envs/py3_8/Lib/site-packages

3. 设置 CUDA

  1. 添加 Contrib 模块:在 Search 框搜 MODULES,在 OPENCV_EXTRA_MODULES_PATH 项中,添加 opencv_contrib 源码中的 modules 目录。

    • 路径示例:E:/code/external/opencv_contrib-4.7.0/modules
    • 注意:必须使用正斜杠 / 或双反斜杠 \\。若不设置,会报错:CUDA: OpenCV requires enabled 'cudev' module from 'opencv_contrib'。
  2. 启用 CUDA 支持:在 Search 框内输入 CUDA,勾选以下两项:

    • WITH_CUDA
    • OPENCV_DNN_CUDA
    • (BUILD_CUDA_STUBS 可选,通常不勾选)

    关于 cuDNN:如果忘记将 cuDNN 解压到 CUDA SDK 目录内,解压后必须在 CMake 中点击 Delete Cache 然后重新 Configure,否则会报找不到 cuDNN。

    关于 Nvidia Video Codec SDK:

    • 若不需要视频编解码功能,可在 CMake 中取消勾选 WITH_NVCUVID 与 WITH_NVCUVENC。
    • 若需要,需下载 Nvidia Video Codec SDK,解压后将 Lib 和 Interface 中的文件分别复制到 CUDA Toolkit 的 lib 和 include 目录中。

    设置完成后,再次点击 Configure,直到下方日志显示 Configure done。

  3. 数学优化:搜索框输入 fast,勾选 ENABLE_FAST_MATH 和 CUDA_FAST_MATH。

    • 注:启用此选项可能会牺牲少量精度以换取更快的浮点运算速度。
  4. 设置显卡算力:搜索框输入 cuda,找到 CUDA_ARCH_BIN。

    • 根据显卡型号修改算力值。例如 GTX 1060 对应的算力为 6.1。
    • 删除其他不需要的算力版本,仅保留 6.1(或多张显卡对应的算力值,用空格分隔)。

4. 设置 ICONV 库

确保相关配置无误后,点击 Generate 开始生成工程,直到出现 Generating done!。

5. 常见警告和错误处理

(1) 模块下载失败

  • 现象:Configure 时在 .cache 文件夹下生成的文件大小为 0kb,或 CMake 输出下载失败警告。
  • 原因:网络问题导致无法从 GitHub 等源下载依赖文件。
  • 解决:
    1. 查看 D:\build\opencv47\CMakeDownloadLog.txt 获取失败文件的下载链接。
    2. 手动下载这些文件。
    3. 将下载的文件重命名为 .cache 文件夹中对应的文件名并覆盖。
    4. 建议准备一份包含完整 .cache 文件的源码包,避免后续反复下载。
    • 注意:不要注释掉 CMakeLists.txt 中的下载语句,否则不会生成必要的缓存文件结构。应注释或删除的是“清理缓存”相关的语句(如果有)。

(2) 警告:OPENCV_GENERATE_SETUPVARS

  • 解决:在搜索框中输入 OPENCV_GENERATE_SETUPVARS,去除勾选,重新 Configure。

(3) 路径格式错误

  • 现象:Configure 报错,提示 OPENCV_EXTRA_MODULES_PATH 路径错误。
  • 解决:确保路径使用正斜杠 / 或双反斜杠 \\,例如 E:/code/external/opencv_contrib47/modules。

(4) Python 未被正确识别

  • 现象:CMake 未能找到正确的 Python 环境。
  • 解决:临时重命名 Anaconda base 目录下的 python.exe 和 libs/python3xx.lib,让 CMake 在首次 Configure 时忽略它们,然后手动指定虚拟环境的路径。

(5) cuDNN 版本不匹配

  • 现象:报错提示 cuDNN 版本与 CUDA 不兼容。
  • 解决:清除 CMake 缓存并重新 Configure。如果修改了环境变量,需重启 CMake GUI 以生效。

Ⅲ、VS 编译

1. 编译源码

  1. 点击 CMake 中的 Open Project,启动 Visual Studio 2019 加载生成的解决方案。
  2. 等待加载完毕,顶部工具栏选择 Release 和 x64。
  3. 在“解决方案资源管理器”中,找到 CMakeTargets -> ALL_BUILD。
  4. 右键点击 ALL_BUILD -> “生成”。
  5. 编译过程可能需要一小时左右,直到输出显示全部成功。
    • 检查:确保在 bindings 目录下生成了 opencv_python3 项目,否则无法在 Python 中使用 CUDA 加速。

2. 安装库到 Python

  1. 在“解决方案资源管理器”中,找到 CMakeTargets -> INSTALL。
  2. 右键点击 INSTALL -> “生成”。
  3. 等待结束后:
    • 在构建目录的 lib\python3\Release 下可看到 cv2.cp39-win_amd64.pyd (版本号可能不同)。
    • 在 Python 环境的 Lib\site-packages 目录下(如 D:\rady\anaconda3\Lib\site-packages),应能看到 cv2 文件夹及相关文件。

至此,Python 环境的 GPU 版本 OpenCV 已安装成功。

3. 编译报错解决

  • 错误:无法解析的外部符号 cv::xfeatures2d::VGG::getDefaultName
  • 原因:源代码目录下的 .cache 文件夹内文件缺失或损坏(通常因网络下载失败导致)。
  • 解决:将事先准备好的完整 .cache 文件夹覆盖到源码目录 E:\code\external\opencv47 下。

Ⅳ、验证

验证方法

方法一:命令行验证

打开 Anaconda Prompt 或 CMD,运行以下代码:

import cv2
print(cv2.__version__)
print(cv2.cuda.getCudaEnabledDeviceCount())

或者一行命令:

python -c "import cv2;print(cv2.__version__);print(cv2.cuda.getCudaEnabledDeviceCount());"

如果输出了版本号且设备计数大于 0,则安装成功。

方法二:Jupyter Notebook 验证

在 Jupyter Notebook 中新建单元格,运行上述 Python 代码进行验证。

验证失败常见问题

(1) import cv2 报错(转义字符问题)

  • 现象:导入时报错,路径相关错误。
  • 原因:config.py 文件中使用了 Windows 反斜杠 \ 作为路径分隔符,导致转义错误。
  • 解决:打开 config.py 和 config-3.xx.py 文件(通常位于 site-packages/cv2 目录下),将所有反斜杠 \ 改为正斜杠 /。

(2) Python 版本冲突

  • 现象:本地 Python 版本与虚拟环境目标版本冲突。
  • 解决:
    1. 设置环境变量 PYTHON_EXECUTABLE3 指向虚拟环境内的 python.exe。
    2. 重启资源管理器 (explorer.exe) 或重启电脑。
    3. 检查注册表项:
      • 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Python\PythonCore\3.8\PythonPath
      • 计算机\HKEY_CURRENT_USER\SOFTWARE\Python\PythonCore\${_CURRENT_VERSION}\InstallPath

(3) 多次 import 报错

  • 现象:首次 import 失败,修改配置后仍需重启 Shell。
  • 解决:修改配置文件后,务必完全退出 Python Shell(运行 quit())并重新进入,或直接重启 IDE/终端。

(4) 多虚拟环境与多 CUDA 版本

  • 若存在多个虚拟环境对应不同 CUDA 版本,需确保当前激活的环境变量(特别是 CUDA_PATH)与编译时使用的版本一致,或在切换环境时动态调整。

附录:CMake 3.26 配置日志记录 (摘要)

Selecting Windows SDK version 10.0.19041.0 to target Windows 10.0.17134.
Detected processor: AMD64
CMAKE_VERSION: 3.26.0
CMAKE_SYSTEM: Windows-10.0.17134
CUDA detected: 11.2
CUDA: Using CUDA_ARCH_BIN=6.1
CUDA NVCC target flags: -gencode;arch=compute_61,code=sm_61;-D_FORCE_INLINES
...
General configuration for OpenCV 4.7.0 =====================================
  Version control:               703f139
  Extra modules:
    Location (extra):            D:/code/external/opencv_contrib47/modules
  Platform:
    Host:                        Windows 10.0.17134 AMD64
    CMake:                       3.26.0
    CMake generator:             Visual Studio 16 2019
    MSVC:                        1929
  NVIDIA CUDA:                   YES (ver 11.2, CUFFT CUBLAS FAST_MATH)
    NVIDIA GPU arch:             61
  cuDNN:                         YES (ver 8.1.0)
  Python 3:
    Interpreter:                 D:/rady/anaconda3/python.exe (ver 3.9.13)
    Libraries:                   D:/rady/anaconda3/libs/python39.lib
    numpy:                       .../numpy/core/include
    install path:                D:/rady/anaconda3/Lib/site-packages/cv2/python-3.9
  OpenCV modules:
    To be built:                 aruco barcode ... world xfeatures2d ...
    Non-free algorithms:         YES
-----------------------------------------------------------------
Configuring done (33.5s)
Generating done (41.5s)
本文内容来源于网友投稿,如有侵权请联系删除。
作者最新文章
编程开发 Python
相关文章 更多
精品专题 更多
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

macOS软件

正软商城macOS软件专区,精选适用于Mac电脑的办公、设计、影音、效率、开发和系统工具,提供软件功能介绍、macOS兼容版本、正版授权及购买下载服务。

IOS软件

正软商城iOS软件专区,精选适用于iPhone和iPad的办公、学习、影音、设计、效率及AI应用,提供功能介绍、适用设备、系统要求和正版获取方式等信息。

AI

正软商城AI软件专区,汇集AI写作、AI绘画、AI视频、AI办公、AI编程、AI翻译、智能客服和数据分析等人工智能工具,提供功能介绍、适用平台、收费方式及正版购买信息。

Mac软件 更多
photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

灵活计算器
灵活计算器

灵活计算器是一款笔记式算数应用,支持实时计算、动态关联和云端同步功能。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

赤友清理大师
赤友清理大师

赤友清理大师是一款为 Mac 设计的智能清理优化工具,可精准扫描垃圾、大文件、重复文件等,释放磁盘空间。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

图几
图几

图几是一款适用于 macOS 的截图、标注与美化工具,支持离线操作保障隐私。界面整理和高频系统操作被放到一起考虑,桌面或窗口内容一多时,管理起来会更省心。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。

Mountain Duck
Mountain Duck

Mountain Duck 是一款能将多个网盘挂载到本地的工具,像本地磁盘一样使用网盘。清理链路的完整性会更好一些,做应用卸载、残留处理和空间整理时,通常能少走很多手动排查步骤。

WINDOWS 更多
3dmax(3ds max)
3dmax(3ds max)

Autodesk 3ds Max 是一款专业的三维建模、动画与渲染软件,广泛应用于建筑可视化、游戏开发、影视动画、广告设计和产品展示等领域。

photoshop
photoshop

Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。

Blender
Blender

Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。

Windows 10
Windows 10

Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。

极度公式
极度公式

极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

密码键盘
密码键盘

密码键盘是一款兼具安全性与便捷性的高效密码管理器。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

思源笔记
思源笔记

思源笔记是一款本地笔记软件,提供所见即所得的编辑方式,为长文写作带来顺滑的体验。记录、整理和输出之间的过渡会更自然,适合长期写作、做笔记或持续沉淀个人内容。

傲梅轻松备份
傲梅轻松备份

傲梅轻松备份是一款专业易用的数据备份软件,为重要数据提供安全保障。日常使用里的持续防护和信息管理会更突出,适合把安全控制放进长期使用流程中的场景。

Office 365 简体中文
Office 365 简体中文

一款文字处理软件,一种订阅式的跨平台办公软件,基于云平台提供多种服务,通过将 Excel 和 Outlook 等应用与 OneDrive 和 Microsoft Teams 等强大的云服务相结合,Office 365 可让任何人使用任何设备随时随地创建和共享内容。

Mac
Wise Folder Hider Pro
Wise Folder Hider Pro

Wise Folder Hider Pro 是一款专业级文件和文件夹隐藏加密软件,为私密数据添加多重保护。高频操作更强调就近处理,浏览、整理和跨目录移动文件时,来回切换和重复点击都会少很多。

WALTR PRO
WALTR PRO

WALTR是一款电脑至iOS文件传输转换工具,操作简单,快速实现文件识别与传送。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。

CodeExpander
CodeExpander

CodeExpander 是一款快捷短语输入增强工具,通过键入缩写自动展开为自定义文段,提升工作效率。任务管理和过程控制会更完整,持续下载、批量同步或需要稳定传输流程的场景会更适合它。