opencv gpu版本安装
cmake 编译opencv4.5.5/opencv4.6.0/opencv4.7.0 gpu版本编译方法相同,本文以opencv4.5.5为例
1 编译环境准备
一定确保已经成功安装了cuda工具包,以及VS编译器,清单如下
cuda工具包
visual studio 编译器
cmake构建工具
opencv源码
opencv-contrib源码
1.1 cmake构建工具下载
https://cmake.org/download/
1.2 opencv源码下载
官网下载地址
https://opencv.org/releases/
国内源:
https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/
1.3 opencv-contrib源码下载
opencv-contrib为opencv的拓展模块,为opencv添加了额外的功能,在编译时一块编译
github下载地址:
https://github.com/opencv/opencv_contrib/
国内源:
https://www.raoyunsoft.com/opencv/opencv_contrib/
2 cmake构建工程
打开cmakecmake-gui在解压出来的文件夹下的bin目录中,双击打开
选择位置打开cmake构建工具后,选择源码位置已经输出位置
configre选择vs版本以及处理器,点击finish,看见configure done表示配置完成
添加opencv-contrib以及cuda这个会出现很多错误,修改自己需要的即可
去掉python版本,勾选opencv_world 添加 opencv_contrib 路径找到此文件,后面添加路径(opencv_contrib中modules所在的路径)
勾选 cuda再搜索栏搜索cuda,添加BUILD_CUDA_STUBS、OPENCV_DNN_CUDA、WITH_CUDA
勾选OPENCV_ENABLE_NONFREE 去除勾选test再搜索栏搜索test,去掉test,加快编译
去除勾选js再搜索栏搜索js,去掉js
再搜索栏搜索java,去掉java
看见configure done表示配置完成
CUDA_ARCH_BIN表示的是支持的显卡算力版本,在搜索栏搜索CUDA_ARCH_BIN会看见支持所有算力版本,可以指定自己的版本,加快编译
配置完成后搜索FAST, 勾选CUDA_FAST_MATH、ENABLE_FAST_MATH
修改完成后,再点一次configre
genetate点击genetate生成工程,出现genetate done表示生成成功
3 Visual Studio 编译opencv
双击打开工程文件 分别在debug以及release模式下,在解决方案资源管理器窗口中找到ALL_BUILD右击,点击生成,等待编译完成 编译完成后,点击install4 Visual Studio 配置opencv
解决方案资源管理器窗口中,项目右击,选择属性 VC++ 目录->包含目录添加编译生成的install 文件下 include路径
VC++ 目录->库目录添加编译生成的install 文件下 x64\vc17\lib
链接器->输入添加依赖项 opencv_world455d
5 附录
1、验证是否编译后的库在新环境中是否存在缺损dll,找到编译路径下install/x64/vc15/bin文件夹,在终端运行opencv_version.exe,如果成功运行,则opencv运行环境配置没有缺损。
2、opencv 启动 gpu,模型加载后添加如下两行代码:
cv::dnn::Net net = cv::dnn::readNetFromTensorflow("yolo.pb");net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);
3、python opencv-gpu 安装
cmake构建工程时勾选python,编译完成后找编译路径下的python_loader中的cv2文件夹
将其移动到python安装路径中的Lib/site-packages中
6 错误总结
如果在编译过程中出现如下错误,参考下面解决方案vs2022重新编译opencv-python cuda加速时报错的问题解决
2. LNK1104 无法打开文件“python37_d.lib” 解决方法
首先确认环境中有没有安装python3.7,如果已经安装python3.7,可以采用release编译,如需编译bebug版本则需要安装python debug版本,参考下面解决方案
LNK1104 无法打开文件“python37_d.lib” 解决办法
3、如果编译过程中出现LINK : fatal error LNK1104: 无法打开文件“XXX.lib”