在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
目录下,此次编译放置情况如下: