win10 编译opencv4.5.0 (gpu版)

1. 背景

正常官方推荐的exe安装,调用cv::dnn模块运行,超级慢,而且打印信息:

setUpNet DNN module was not built with CUDA backend; switching to CPU

即使加上加速代码,依然超级慢,跑512x512图像,分割网络需要1s,2080ti 7.5算力:

this->loc_net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
this->loc_net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);

所以需要编译源码,开启cuda加速模块。


2. 环境

(1)win10,visual studio 2019 (试过2015编译失败),cuda10.2,cudnn8.0.3,opencv4.5.0, opencv-contrib-4.5.0.

(2)或者,visual studio 2019+cuda11.4+cudnn8.2.2(8.0.3)+opencv4.5.0+opencv-contrib4.5.0

(3) visual studio 2019+cuda11.1+cudnn8.0.3+opencv4.5.0+opencv-contrib4.5.0

3. 编译opencv

下载opencv4.5.0

https://github.com/opencv/opencv/archive/4.5.0.zipicon-default.png?t=N7T8https://github.com/opencv/opencv/archive/4.5.0.zip下载opencv-contrib4.5.0

https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.0.zipicon-default.png?t=N7T8https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.0.zip下载.cache文件夹(或者关注最下面的公众号,回复cache即可获取

opencv4.5.0对应的.cache文件夹-互联网文档类资源-CSDN下载里面的文件完整,如下所示:adedataffmpegippicvnvidia_optica更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/jizhidexiaoming/82456363

把.cache文件夹放在opencv-4.5.0 文件下

下载安装cmake 3.23

https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-windows-x86_64.msiicon-default.png?t=N7T8https://github.com/Kitware/CMake/releases/download/v3.23.0-rc2/cmake-3.23.0-rc2-windows-x86_64.msicmake配置源路径和目标路径

点击configure 

等待几分钟。

(1)勾选CUDA;

(2)设置opencv_contrib路径

 (3)勾选build_opencv_world

(4)去掉python,test、java加快后面的编译

再次点击configure 

(5)cuda_arch_bin算力设置

算力查询: 

CUDA GPU | NVIDIA Developericon-default.png?t=N7T8https://developer.nvidia.com/zh-cn/cuda-gpus

或者cuda_generation设置为auto

 

(6)勾选cuda_fast_math

(7) 去掉setupvars

点击configure,再点击generate

这时候在生成的文件夹下搜索opencv_world450d.lib是没有的,需要vs继续编译。

 vs2019打开opencv.sln,进行编译

 打开界面如下。

 任务栏-》生成-》配置管理器,勾选INSTALL

 点击生成解决方案。等待两小时。。。编译成功。


4. 问题

(1)2080ti的显卡算力是7.5,在2080ti编译的opencv,放到3090显卡算力8.6上跑报错:

OpenCV(4.5.0) Error: No CUDA support (OpenCV was not built to work with the selected device.

备忘下,原因还未知。。。继续第二步探索

(2)3090显卡上编译opencv,设置cuda_arch_bin = 7.5;8.6,vs2019编译时报错:

CMake Error at cuda_compile_1_generated_gpu_mat.cu.obj.Debug.cmake:22.

 备忘下,原因还未知。。。继续第三步探索

(3)3090显卡上编译opencv,设置cuda_generation= auto,点击configure后,cuda_arch_bin会自动识别到当前值应该为8.6

 继续探索

(4)编译3090编译opencv时报错(此时设置cuda_arch_bin=8.6):

nvcc fatal   : Unsupported gpu architecture 'compute_86'

LINK : fatal error LNK1104: 无法打开文件“..\..\lib\Debug\opencv_world450d.lib”

根据以下链接建议升高cuda版本(当前是10.2,建议升到11.4)。

ubuntu - nvcc fatal : Unsupported gpu architecture 'compute_86' - Stack Overflowicon-default.png?t=N7T8https://stackoverflow.com/questions/69865825/nvcc-fatal-unsupported-gpu-architecture-compute-86升级后,编译成功。

 (5)基于第4步,编译成功后进行测试,问题:

initCUDABackend CUDA backend will fallback to the CPU implementation for

原因未知。待解决。。。

(6)cuda\vc140.pdb, has an obsolete format, delete it and recompile

成功编译完release版本后,紧接着编译debug报这个错误,原因可能是有release生成的文件冲突了,解决办法:删掉编译release生成的所有文件,重新编译,或者更彻底的办法是重新走一遍上面的流程,即用cmake重新生成opencv.sln,然后重新编译debug版本。

  • 7
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 21
    评论
编译 OpenCVGPU 本需要先安装 CUDA 和 cuDNN。在安装好这两个软件后,按照以下步骤编译 OpenCVGPU 本: 1. 下载 OpenCV 源代码,并解压缩到任意目录。 2. 进入 OpenCV 源代码目录,创建一个新的目录 build,并进入该目录。 3. 执行以下命令生成 Makefile 文件: ``` cmake -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D WITH_CUDA=ON \ -D CUDA_ARCH_BIN=7.5 \ -D CUDA_ARCH_PTX=7.5 \ -D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules \ ../opencv ``` 解释一下各个参数的含义: - `-D CMAKE_BUILD_TYPE=RELEASE`:编译类型为 Release 本。 - `-D CMAKE_INSTALL_PREFIX=/usr/local`:指定安装目录为 /usr/local。 - `-D WITH_CUDA=ON`:打开 CUDA 支持。 - `-D CUDA_ARCH_BIN=7.5`:指定编译生成的二进制代码支持的最低 CUDA Compute Capability 本。 - `-D CUDA_ARCH_PTX=7.5`:指定编译生成的 PTX 代码支持的最低 CUDA Compute Capability 本。 - `-D OPENCV_EXTRA_MODULES_PATH=../opencv_contrib/modules`:指定额外的模块路径,这里是 opencv_contrib 模块的路径。 - `../opencv`:指定 OpenCV 源代码的路径。 4. 执行以下命令编译: ``` make -j8 ``` `-j8` 表示使用 8 个线程进行编译(具体数字可以根据自己的 CPU 核心数进行调整)。 5. 执行以下命令安装: ``` sudo make install ``` 这将会把编译好的 OpenCV 安装到 /usr/local 目录下。 注意:以上命令假定你已经正确安装了 CUDA 和 cuDNN。如果你没有安装或者安装不正确,那么编译 OpenCVGPU 本将会失败。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 21
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr.Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值