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构建工具下载
1.2 opencv源码下载
官网下载地址
国内源:
1.3 opencv-contrib源码下载
opencv-contrib为opencv的拓展模块,为opencv添加了额外的功能,在编译时一块编译
github下载地址:
国内源:
2 cmake构建工程
- 打开cmake
cmake-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,去掉java
- 再次点击configre
看见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右击,点击生成,等待编译完成
- 编译完成后,点击install
4 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 错误总结
- 如果在编译过程中出现如下错误,参考下面解决方案
2. LNK1104 无法打开文件“python37_d.lib” 解决方法
首先确认环境中有没有安装python3.7,如果已经安装python3.7,可以采用release编译,如需编译debug版本则需要安装python debug版本,参考下面解决方案
3、如果编译过程中出现LINK : fatal error LNK1104: 无法打开文件“XXX.lib”
- 出现此问题时确认路径中是否包含中文
- 采用vs2017进行编译,2022时可能会出现错误
- cmake过程中有错误未解决