📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处
文章目录
引言
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
2.1安装CUDA
cuda(库达)版本是根据电脑配置的英伟达显卡来选择的,在英伟达控制面板中可以查询到本机支持最高版本的cuda,例如本机是cuda11.1。
之后注册并登录英伟达官网,下载cuda。
cuda官网下载:https://developer.nvidia.com/cuda-toolkit-archive
一路默认安装即可。
检查是否安装成功
cmd输入:
nvcc -V
2.2安装驱动
官网下载驱动:https://www.geforce.cn/drivers
2.3安装cudnn
选择对应的版本:https://developer.nvidia.com/rdp/cudnn-archive
2.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加速测试
3.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);
}
}
3.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编译全解析