目录
配置安装OpenCV(4.5.4)+Opencv_contrib(4.5.4)+CUDA(v11.5)
结合CUDA,OpenCV的性能可以得到约一个数量级的提升。但据我了解,搭配CUDA的OpenCV需要编译阶段就进行安装,无法在完成OpenCV安装后再补充CUDA功能。在安装过程中,走了很多坑,写这篇博客记录一下,希望大家能少走弯路。
准备
-
Windows10
-
Visual Studio 2017 or 2019
!!!别用VS2022。因为CMake中的Generator没有Visual Studio 2022这个选项.
直接进入Visual Studio官网,找到的只有2022。从官网下载旧版本的Visual Studio的链接,点击这里
-
OpenCV 4.5.4 下载链接
选择4.5.4下面的zip格式下载即可。
-
OpenCV_contrib 4.5.4 下载链接
选择4.5.4下面的zip格式下载即可。
-
CUDA Toolkit 下载链接
-
CUDNN
首先,打开命令行(win+r,输入cmd,回车)。输入命令nvidia-smi。
观察输出结果,找到CUDA Version。
进入链接,找到与CUDA版本匹配的CUDNN,下载。注:需注册登录NVIDIA,按照指引注册,重新进入上述链接即可。
提示
- 尽量保存中间文件,包括下载文件至最终完成安装。
- CUDA Toolkit及CUDNN下载时建议挂VPN,若速度慢,换节点试试。
安装
请按顺序安装
安装Visual Studio 2019
- 打开前面下载的Installer;
- 选择“Python 开发”和“使用C++的桌面开发”,点击安装。(安装位置推荐使用默认位置);
- 等待,完成后按要求重启。
安装CUDA
打开前面下载的安装程序,根据提示安装,在选择添加环境变量时选择为所有用户添加,其他选项默认即可。
安装CUDNN
- 解压下载的CUDNN安装包,打开;
- 把
cuda\bin
目录下的所有文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x\bin
下(vx.x为版本); - 把
cuda\include
目录下的所有文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x\include
下; - 把
cuda\lib\x64
目录下的所有文件复制到C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x\lib\x64
下; - 添加环境变量
CUDA_PATH
,设置值为C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\vx.x
,若上面安装CUDA时添加了,这里查看确认一下就可以了。
CMake编译OpenCV
关键的一步!
-
打开下载的CMake,进行安装;
-
安装完成后,打开CMake GUI(在安装目录下);
-
将下载好的OpenCV 4.5.4及OpenCV_contrib 4.5.4解压,放到同一个目录下。并在该目录下,建一个空目录build;
OpenCV
build
opencv_contrib-4.5.4
opencv-4.5.4
-
在CMake中,
Where is the source code
添加opencv文件夹,即<path>/Opencv/opencv-4.5.4
(注意:如果<path>/Opencv/opencv-4.5.4
下还有一层文件夹opencv-4.5.4
,请用<path>/Opencv/opencv-4.5.4/opencv-4.5.4
); -
在CMake中,
Where to build the binaries
添加build文件夹,即<path>/Opencv/build
; -
点击configure,选择你使用的Visual Studio版本,选择平台(一般是x64);
注意:如果这里版本选错,点击File > DeleteCache。再点击Configure重新选择。
-
点击finish;
-
再次点击configure,等待(过程中有文件下载,请先搭好梯子);
-
完成后,在编译选项中进行勾选。
BUILD_CUDA_STUBS
、OPENCV_DNN_CUDA
、WITH_CUDA
、OPENCV_ENABLE_NONFREE
、build_opencv_world
打勾; -
找到编译选项
OPENCV_EXTRA_MODULES_PATH
,将Value
设置为<path>/Opencv/opencv_contrib-4.5.4/modules
(即<path>/Opencv/opencv_contrib-4.5.4
中的modules
目录,注意中间有没有多一层文件夹); -
点击configure,等待至出现configuring done;
注:若报错,先查报错并修改后重试;若多次重试,仍报同一个错误,建议新建build1。修改
Where to build the binaries
为<path>/Opencv/build1
;点击File > DeleteCache。再点击Configure重新开始。 -
点击generate,等待至出现generating done;
-
点击open project。
Visual Studio编译
- 等待加载完毕(左下角显示就绪);
- 解决方案配置选择
Release
,解决方案平台选择x64
(在本地Windows调试器左边); - 在解决方案资源管理器中找到
ALL BUILD
,右键,点击生成; - 进入漫长的等待,期间尽量不做其他操作;
- 几个小时完成,输出:生成:成功12x个,失败0个,最新0个,跳过0个;
- 在解决方案资源管理器中找到
INSTALL
,右键,点击生成; - 等待几十秒,完成。
配置阶段
-
配置环境变量:右键“此电脑” > 属性 > 高级系统变量 > 环境变量 > 系统变量 > Path > 编辑 > 添加
将
<path>\OpenCV\build\install\x64\vc15\bin
添加到Path,具体路径根据你的编译情况进行修改;重启。
-
属性管理器配置
打开VS > 新建 > 空项目。把
Debug
x86
改成Release
x64
;点击 视图 > 其他窗口 > 属性管理器;
点击项目名左侧的 “▶”,找到
Release|x64
。右键 添加新项目属性表 > 修改名称为opencv454 > 添加;双击刚刚添加的
opencv454
;点击
VC++目录
> 包含目录 > 右侧下三角 > 编辑;点击黄色图标(新行) > 添加
<path>\OpenCV\build\install\include
和<path>\OpenCV\build\install\include\opencv2
(具体根据你的安装路径确定)> 确定;库目录 > 右侧下三角 > 编辑;
点击黄色图标(新行) > 添加
<path>\OpenCV\build\install\x64\vc15\lib
(具体根据你的安装路径确定)> 确定;连接器 > 输入 > 附加依赖项 > 添加
opencv_world454.lib
;确定,完成。
测试
-
视图 > 解决方案资源管理器;
-
源文件 > 右键 添加 > 新建项 > 添加;
-
输入测试代码;
#include "opencv2/opencv.hpp" using namespace cv; using namespace std; int main(){ Mat img = imread("<图片地址>\\example.png", IMREAD_COLOR); namedWindow("test", WINDOW_NORMAL); imshow("test", img); waitKey(0); return 0; }
-
点击本地Windows调试器;
-
显示样例图片;
-
敲击任意键(如回车),结束程序,完成测试。
参考教程
知乎:
CSDN:
stackoverflow:
NVIDIA:
注:当前最新版OpenCV为4.5.4,在github中下载时选择最新版即可。