opencv进阶-OpenCV4.4 CUDA加速

OpenCV支持传统的图像处理的CUDA加速,从OpenCV4.2开始支持深度神经网络的CUDA加速,因此在OpenCV4.4中,CUDA是既可以加速传统的图像处理,特征与对象检测;又可以支持深度神经网络的CUDA加速。
本博客需要用到的网址汇总:
• opencv官方社区 - https://www.opencv.org/
• github官方主页 - https://github.com/opencv/opencv
• 英伟达驱动下载-https://www.nvidia.cn/Download/index.aspx?lang=cn
• CUDA下载-https://developer.nvidia.com/cuda-downloads
• 注册账号,按需求下载cudnn的安装文件:https://developer.nvidia.com/rdp/cudnn-archive
• Cmake:https://cmake.org/

OpenCV+CUDA编译与配置

全程参考:win10+vs2017+opencv4.5.0+opencv_contrib-4.5.0+cuda源码编译详细教程
在此感谢这位博主的无私分享!

一、本次安装的各个版本

参考:windows10+nvidia驱动+cuda10.1+cudnn安装教程
首先说一下系统与相关软件版本:

1.Window 10 x64

2.VS2015专业版

3.CMake 3.14.1

4.OpenCV4.4.0

5.OpenCV_contrib-4.4.0

6.CUDA11.10

7.cuDNN8.1.1

1.1安装CUDA

cuda(库达)版本是根据电脑配置的英伟达显卡来选择的,在英伟达控制面板中可以查询到本机支持最高版本的cuda,例如本机是cuda11.1。
之后注册并登录英伟达官网,下载cuda。
cuda官网下载https://developer.nvidia.com/cuda-toolkit-archive
在这里插入图片描述

在这里插入图片描述
一路默认安装即可。
在这里插入图片描述
检查是否安装成功
cmd输入:

nvcc -V

在这里插入图片描述

1.2安装驱动

官网下载驱动:https://www.geforce.cn/drivers
在这里插入图片描述

1.3安装cudnn

选择对应的版本:https://developer.nvidia.com/rdp/cudnn-archive

1.4安装cmake和编译OpenCV CUDA

1.安装cmake

提示:这一步非常关键,关系到后面install文件生成的成败,因此这一步要解决掉所有报错后再进行generate。
cmake安装参考:opencv学习-opencv4.1编译扩展模块

2.编译OpenCV CUDA
第一次点击Configure:

选择对应vs的版本,64位系统选择Win64,默认的是Win32

第二次点击Configure:
点击Configure然后记住几个点:

1.cuda相关的全部都要勾选上;
2.test相关的全部不勾选;
3.face相关的全部不勾选;
4.添加扩展模块路径,即OPENCV_EXTRA_MODULES_RATH这一项,并且注意路径不要复制,需要通过cmake来选择路径!
5.将build_opencv_world不勾选。

第三次点击Configure:

1.cuda相关的选项生成后进行勾选,即下图中的cuda_fast_math.
2.nonfree相关的选项生成后进行勾选。
3.将cuda_arch_bin即显卡的算力内容改成自己显卡及其以上算力,低于的都删除。

查看自己N卡显卡算力网址:https://developer.nvidia.com/cuda-gpus
在这里插入图片描述

期间如果遇到某个报错最直接的做法就是取消该模块,然后再进行编译,报错就消失了。例如下面:
安装过程中出现一个报错,解决办法参考:CMake Warning at cmake/OpenCVGenSetupVars.cmake:54 (message):
在这里插入图片描述
两次生成操作
Configure完成后点击generate,之后会提示generating done,说明cmake编译成功了。点击open project进行编译部分了。

1.选择release版本,然后如图所示点击ALL_BUILD,选择“生成”,等一段时间。如果这一步报错说明在cmake编译的时候存在问题,需要先解决编译的问题,然后再回过来进行一次生成。
2.解决方案资源管理器--------CMakeTargets----右键以下INSTALL,选择“生成”

二、CUDA加速测试

2.1检查安装

#include<opencv2\opencv.hpp>
#include<opencv2\cudaimgproc.hpp>

using namespace cv;
using namespace std;
using namespace cv::cuda;

int main() {
    
    
	cuda::printCudaDeviceInfo(cuda::getDevice());
	int count = cuda::getCudaEnabledDeviceCount();
	if (count > 0) {
    
    
		printf("GPU Device Count:%d\n", count);
	}
}

在这里插入图片描述

2.2环境配置

net.setPreferableBackend(DNN_BACKEND_CUDA);
net.setPreferableTarget(DNN_TARGET_CUDA);

加载CUDA作为计算后台和目标时报错:
在这里插入图片描述
原因分析:

setUpNet DNN module was not built with CUDA backend; switching to CPU
setUpNet DNN模块未使用CUDA后端构建;切换到CPU。
意味着调用GPU失败

解决参考:opencv调用gpu编译过程中遇到的问题和相关文件
文字参考:
OpenCV4.4 CUDA编译与加速全解析

视频教程:
OpenCV4.4 + CUDA编译全解析

猜你喜欢

转载自blog.csdn.net/weixin_51244852/article/details/119519376