在 Windows 上编译带 CUDA 的 OpenCV
本文一步一步地介绍如何在 windows 上编译带 CUDA 模块(GPU)支持的 OpenCV,为避免长篇大论,截图过多,尽可能简单地描述
本次安装说明:
本次在 windows10 上、RTX2060S 编译 OpenCV4.5.0,其他相关软件安装情况如下:
- NVIDIA Diver 461
- CUDA 11.1
- CUDNN 8.0.4
- Cmake 3.19.3
- Visual studio 2017
第一步:安装前准备
- 确认系统显卡牌子为:NVIDIA,并在此查看是否支持 CUDA ,在列表中找到即是支持显卡
- 下载并安装显卡驱动
- 下载并安装 CUDA,下载 CUDNN,安装过程参考
- 下载并安装 CmakeGUI
- 下载并安装 VIsual sudio 2017
- 下载 OpenCV
- 下载 OpenCV contrib,需跟 OpenCV 同版本
- 解压 OpenCV 及 OpenCV contrib
- 在 OpenCV 解压目录下创建 build
第二步:使用 Cmake-gui 构建 opencv
- ** 启动 Cmake:** 为编译 OpenCV 的 Python 接口,需在在终端激活某个 conda 虚拟环境,并运行
cmake-gui
程序,如不需要使用 Python 接口,直接运行cmake-gui
即可 - 配置 Cmake:(1)
source code
选择 OpenCV 解压后的源码;(2)build binaries
选择第一步创建的 build 目录;(3)点击Configure
,在弹窗中依次选VIsual sudio 15 2017
、x64
,点击Finish
- ** 配置 CUDA 模块:**Cmake 完成初始编译编译后,在出现的红色新选项中勾选
WITH_CUDA
,OPENCV_DNN_CUDA
,ENABLE_FAST_MATH
- ** 配置 OpenCV contrib:** 在出现的红色新选项中找到
OPENCV_EXTRA_MODULES_PATH
,并将 Value 配置为第一步解压的 OpenCV contrib 目录下的modules
目录路径 - 配置 OpenCV 的 Python 接口:(1)点击
Add Entry
新增 BUILD_opencv_python3 和 BUILD_opencv_python2 两项,其中 BUILD_opencv_python3 设置 value 为 true,另一个设置为 false;(2)搜索并配置PYTHON3_EXECUTABLE
、PYTHON3_INCLUDE_DIR
、PYTHON3_LIBRARY
、PYTHON3_NUMPY_INCLUDE_DIRS
、PYTHON3_PACKAGES_PATH
,配置结果看下图 [1] - ** 其他配置项:** 搜索并勾选
OPENCV_ENABLE_NONFREE
,build_opencv_world
- 再次点击
COnfigure
,在新增红色配置项中找到CUDA_ARCH_BIN
,删除小于显卡计算能力的数值,计算能力可以在找到。 - 再次点击
COnfigure
,确认日志中出现 Configuring done 后,点击Generate
第三步:使用 Visual studio 编译 opencv
- 点击
Open Project
或者使用Visual studio
打开 OpenCV.sh - 打开后,更改 Debug 模式为 Release 模式
- 右键点击
Cmake Targets
下的ALL_BUILD
,并点击build
,此步编译文件需要较长时间 - 一旦完成,右键点击
Install
,并点击build
到此,已经成功在 windows10 上编译了带 CUDA 模块的 OpenCV,编译得到的文件位于 build\install
下
第四步:Python 及 C++ 使用
Python 端使用
- 安装 OpenCV 到 Python,
- 新建 Python 文件,写入以下内容,并在终端运行,如果无误则运行成功
1 | import cv2 |
C++ 端使用
- 配置系统环境,将编译目录下的
install\x64\vc15\bin
完整路径配置到系统路径下,并重启系统 - 打开 visual studio,新建
Visual C++
空项目,新建文件main.cpp
,写入下面内容 - 点击
生成->生成解决方案
,不出现错误后,运行程序,无错误即可使用 OpenCV 的 cuda 模块 - 配置 OpenCV 开发环境,依次点击
视图->其他窗口->属性窗口
,右键点击Release | x64
,新建项目属性表,新建完成后双击项目该文件,进行以下配置。
- VC++ 目录 -> 包含目录:E:\opencv-4.5.0\build_test\install\include;E:\opencv-4.5.0\build_test\install\include\opencv2;$(IncludePath)
- **VC++ 目录 -> 库目录:**E:\opencv-4.5.0\build_test\install\x64\vc15\lib;$(LibraryPath)
- ** 链接器 -> 输入:**opencv_world450.dll;%(AdditionalDependencies)
1 |
|
第四步:解决问题及其他需了解信息
资源无法下载 [2]
在此次编译中,无法下载的资源有:ADE、face_landmark_model.dat、ffmpeg、ippicv、nvidia_optical_flow、xfeatures2d
** 解决方法:** 网络下载,这些文件,计算文件 md5 进行文件重命名后,将文件放置在编译目录下的.cache
目录下,此次编译放置情况如下:
win10 使用 vs2019 从源码编译 OpenCV4.5+cuda10.2+cudnn8.0 的 C++ 环境和 Python 环境 ↩︎
windows 安装 opencv4.1.1 过程中 ffmpeg、ippicv、face_landmark_model 下载出错解决办法 ↩︎
Build OpenCV 4.4.0 with CUDA (GPU) Support on Windows 10 (Without Tears) | by M. Haroon Shakeel | Medium ↩︎
Win10 下编译同时支持 CUDA 以及 Python3 的 OpenCV 4.2 教程_吃白兔的小青菜的博客 - CSDN 博客 ↩︎