opencv4.x + cuda概述
opencv4.x中关于cuda加速的内容主要有两个部分,第一部分是之前opencv支持的图像处理与对象检测传统算法的cuda加速;第二部分是opencv4.2版本之后开始支持的针对深度学习卷积神经网络模型的cuda加速。这些内容都在opencv的扩展模块中,想要获取这opencv cuda的支持,必须首先编译opencv cuda相关的模块,这里主要是开展模块以cuda开头的那些。此外编译的电脑或者pc必须有n卡(英伟达gpu卡),并且按照好了正确版本的驱动与cudnn支持软件。本文分为两个部分来说明如何在opencv中实现cuda加速,第一部分是实现cuda支持版本opencv编译,第二部分是opencv cuda sdk编程代码演示。
01
opencv+cuda编译与配置
首先说一下系统与相关软件版本:
window 10 x64
vs2015专业版
cmake 3.17.1
opencv4.4.0
opencv_contrib-4.4.0
cuda10.0
cudnn7.0
opencv4.4下载地址
https://github.com/opencv/opencv/releases/download/4.4.0/opencv-4.4.0-vc14_vc15.exe
opencv4.4扩展模块下载地址:
https://github.com/opencv/opencv_contrib/archive/4.4.0.zip
下载好opencv4.4极其扩展模块之后,我们就开始下面的编译步骤。
第一步:打开cmake,设置好下面的目录路径,注意源代码路径需要指向真实的opencv的source目录。图示如下:
第一次运行,记得参数选择x64
如果成功运行了config之后,请继续完成下面的设置。
第二步:设置扩展模块路径,勾选所有cuda选项再次点击config
点击config运行之后,再点击generate安装,如果一切ok即可完成cmake部分,下面就是到build的目录下:
d:opencv-4.4.0opencvcudabuild
双击打开opencv.sln工程文件,切换到release模型下,右键点击all_build选择【生成….】运行完成,再次右键选择install,选择【生成…】这两次过程都会比较漫长,编译完成之后,就会得到intall目录,我们需要的就是它,其它都可以删掉了。这样我们就完成了opencv cuda的编译。
注意点:
可能看我编译最多30分钟完成这些操作(等待时间不计在内),但是第一次这么干的新手会遇到各种问题,其中最常见的一个网络问题就是无法下载第三方库,导致cmake编译失败,这里时候需要手动下载一下,然后copy到
d:opencv-4.4.0opencvsources3rdparty
文件下对于目录内即可。
在config的扩展模块的时候,请去掉所有test相关的模块,然后选择不编译opencv_face模块,原因是它会下载一些东西,但是网络无法连接,这样就可以cmake失败。
完成了整个编译过程之后,生成install之后就可以来配置opencv cuda支持啦!跟配置正常opencv4版本相似,唯一不同的就是这里没有opencv_world440.lib文件了,而且根据各个模型生成lib,需要把这些lib全部添加到链接器中,然后把库目录与包含目录原来指向目录都改到指向编译以后的install内相关目录路径,把vc14/bin目录添加环境变量中去。重启vs2015,即可完成全部配置过程。
上述步骤的详细操作,b站视频,直接这里观看!
https://www.bilibili.com/video/bv1rp4y1a7cm/
02
cuda加速演示
opencv支持传统的图像处理的cuda加速,从opencv4.2开始支持深度神经网络的cuda加速,因此在opencv4.4中,cuda是既可以加速传统的图像处理,特征与对象检测;又可以支持深度神经网络的cuda加速。下面的代码首先查询相关gpu
1cuda::getdevice());2int count = cuda::getcudaenableddevicecount();3if (count > 0) {4 printf(gpu device count : %d , count);5}
设备信息,代码与运行截图如下:
dnn人脸检测加速
cpu上运行opencv dnn人脸检测:
gpu上运行opencv dnn人脸检测:
视频背景分析
可以看出,无论是对传统图像处理的视频背景分析,还是基于深度学习dnn人脸检测,opencv cuda都可以取得很好的加速效果。
注意:opencv4.4的cuda导入跟之前的方式有所不同,模型头文件更加模块化,需要导入的头文件如下:
1#include 2#include 3#include 4#include 5#include 6#include 7#include
升级煤矿安全监测监控系统的原因是什么
人工智能技术可以诊断糖尿病视网膜的病变
音频/视频领域常用术语简介
PCB板的翘曲度介绍
智能制造与供应链协同会产生怎样的改变
如何在OpenCV中实现CUDA加速
iPhone12追加订单,需求端紧张的现象或将缓解
油浸式试验变压器做耐压试验怎么接线呢
米粉节持续到9号 小米Note4X高配1299元开售 快来看米粉节终极攻略
开关电源的推挽拓扑结构
环保化、小型化一二次融合的新型开关柜
诺基亚9用实力说话!两大强手合力打造
任天堂优化手柄PCB 解决Joy-Con连接问题
亿纬锂能正在大力扩产软包三元电池
高速连传与LORA的区别及特点
特斯拉指责华盛顿邮报刊登质疑文章存在误导性
未来飞机或将引入虚拟现实技术操作
魅族Pro7什么时候上市?魅族Pro7最新消息:魅族Pro7发布会或在7月,副屏的魅族Pro7和全面屏的魅族Pro7你选谁?
LED背光板常见故障的维修
综述:基于金属纳米材料的可穿戴无创葡萄糖传感器研究进展