cmake 编译opencv4.5.5/opencv4.6.0/opencv4.7.0 gpu版以及vs2022配置opencv-gpu

  • Post author:
  • Post category:其他




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下载地址:


https://github.com/opencv/opencv_contrib/

国内源:


https://www.raoyunsoft.com/opencv/opencv_contrib/



2 cmake构建工程

  1. 打开cmake

cmake-gui在解压出来的文件夹下的bin目录中,双击打开

在这里插入图片描述

  1. 选择位置

打开cmake构建工具后,选择源码位置已经输出位置

在这里插入图片描述

  1. configre

选择vs版本以及处理器,点击finish,看见configure done表示配置完成

在这里插入图片描述

  1. 添加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

在这里插入图片描述

  1. 再次点击configre

看见configure done表示配置完成

CUDA_ARCH_BIN表示的是支持的显卡算力版本,在搜索栏搜索CUDA_ARCH_BIN会看见支持所有算力版本,可以指定自己的版本,加快编译

在这里插入图片描述

配置完成后搜索FAST, 勾选CUDA_FAST_MATH、ENABLE_FAST_MATH

在这里插入图片描述

修改完成后,再点一次configre

  1. genetate

点击genetate生成工程,出现genetate done表示生成成功

在这里插入图片描述



3 Visual Studio 编译opencv

  1. 双击打开工程文件

在这里插入图片描述

  1. 分别在debug以及release模式下,在解决方案资源管理器窗口中找到ALL_BUILD右击,点击生成,等待编译完成

在这里插入图片描述

  1. 编译完成后,点击install

在这里插入图片描述



4 Visual Studio 配置opencv

  1. 解决方案资源管理器窗口中,项目右击,选择属性

在这里插入图片描述

  1. VC++ 目录->包含目录

添加编译生成的install 文件下 include路径

在这里插入图片描述

  1. VC++ 目录->库目录

添加编译生成的install 文件下 x64\vc17\lib

在这里插入图片描述

  1. 链接器->输入

添加依赖项 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 错误总结

  1. 如果在编译过程中出现如下错误,参考下面解决方案


vs2022重新编译opencv-python cuda加速时报错的问题解决

在这里插入图片描述

2. LNK1104 无法打开文件“python37_d.lib” 解决方法

首先确认环境中有没有安装python3.7,如果已经安装python3.7,可以采用release编译,如需编译debug版本则需要安装python debug版本,参考下面解决方案


LNK1104 无法打开文件“python37_d.lib” 解决办法

在这里插入图片描述

3、如果编译过程中出现LINK : fatal error LNK1104: 无法打开文件“XXX.lib”

  • 出现此问题时确认路径中是否包含中文
  • 采用vs2017进行编译,2022时可能会出现错误
  • cmake过程中有错误未解决



版权声明:本文为qq_45723275原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。