rec
最近在做opencv相关的项目时发现,在跑dnn模型时如果单纯只使用cpu帧率会非常低,有时甚至一两秒才刷一帧的图像出来,需要使用硬件加速,所以在各大论坛等翻阅使用gpu加速的教程,可惜非常杂,而且并不完整。作者在实际操作中也是踩坑无数,同时借此整理一篇关于opencv配置cuda支持gpu加速的教程,供大家参考。
相关的资料也会整理后,大家可通过后台私信 opencv 获得本次的所有相关文件源码以及软件包。
一、环境准备
查看电脑nvidia的cuda版本号,下载对应版本cuda toolkit(当前使用11.1版本)(具体需不需要下载和自己电脑cuda相同版本的还有待查证)
cmake3.17.2(最高只支持到vs2019版)
visual studio 2019
opencv源代码(当前使用opencv 4.6.0版本)
opencv_contrib(当前使用4.6.0版本)
以上相应下载链接及软件会放在资料里。cuda精简安装教程请关注补充内容
二、使用cmake “make”
1、打开cmake(cmake-gui),第一个源代码路径选择刚刚下载的opencv源代码路径,路径需要选择到sources 第二个编译输出路径,可在opencv文件夹下创建一个新的文件夹,用于存放编译输出的文件,这里创建为newbuild。
之后点configure进行第一次配置,弹出窗口第一个选择visual studio 16 2019,第二个选择x64,其余保持默认,点击finish,等待配置完成后不出意外会有3个错误和警告,需要重点关注,这些错误会影响到后面的编译。
我的错误为 (1)跟python2.7相关的错误,可忽略
(2)ffmpeg的相关文件下载失败,这里需要自己从自己选择的编译输出路径中找到 cmakedownloadlog.txt 打开(我的路径为h:opencv_pasksopencv ewbuildcmakedownloadlog.txt),里面提供了ffmpeg相关文件的链接地址,下载即可。最后我们统一放入相关文件夹内(所以这里只需先下载下来,暂不用放入任何文件夹内)
(3)这里只是个 warning 不是 error ,可忽略
(当然有的人可能还会有和 ippicv 相关的错误,和 ffmpeg 同理,找到对应的文件链接下载即可) 2、勾选相应配置 (1)在 search 搜索框里搜索 cuda,勾选 opencv_dnn_cuda 和 with_cuda 两个选项
(2)搜索 example,勾选 build_examples 和 install_python_examples(这一步可不用)
(3)搜索 non,勾选opencv_enable_nonfree
(4)搜索 mod,opencv_extra_modules_path 选择刚刚下载的 opencv_contrib 路径,需要到 modules 文件夹下(我的为h:/opencv_pasks/opencv_contrib-4.6.0/modules, 注意这里是正斜杠而不是反斜杠) 以上完成之后再次点击 configure 进行第二次配置,等待配置完成后可继续下一步。
这里不出意外会多出几个红色的错误警告 例如:wechat_qrcode、xfeatures2d、face相关等,基本都是因为下载不到文件引起,需要自己手动下载
(5)搜索 cudnn,勾选 with_cudnn(我的默认已经勾选)
(6)搜索 cubla,勾选with_cublas(我的默认已经勾选)
(7)搜索 cuda_ar,在cuda_arch_bin填入自己的显卡gpu算力,不知道的可进入网址查询,我的为6.1。 (显卡gpu算力查询网址见资料)
(8)搜索 fast,勾选cuda_fast_math 和 enable_fast_mat
(9)搜索 type,将cmake_configuration_types的debug删除,只保留release
(10)搜索 world,勾选build_opencv_world
完成上述后再次点击 configure 进行第三次配置,等待配置完成后,这时我们需要放入刚刚所说的一些下载错误的缺失文件。
在源码目录下的 .cache 文件夹内(我的路径为 h:opencv_pasksopencvsources.cache)放入刚刚下载的相应文件,需要放入到对应的文件夹下,并且文件名需要和自己目录下生成的 0k 文件名相对应,不对应的需要修改成对应的,然后将其替换。(不会的可以参考我的 .ceche 目录,同时如果有文件下载不了的可以使用我文件里的)
替换完刚刚出错的所有文件后,回到 cmake,点击 generate 会生成一个vs2019的c++工程,之后点击 open project 打开工程。
在 vs2019 上方选择 release,之后点右边的 cmaketargets-all_build,右键生成,等待生成完成,过程大约一小时到两小时,根据自己电脑的 cpu 而定。生成完会出现0错误、0跳过,全是成功的,之后还是同样在 all_build 下方的 install,同样右键生成,过程大约几分钟,等待生成完成即可。
三、配置环境变量
此电脑右键-属性-高级系统设置-高级-环境变量 在上方的用户变量中新建两个变量
在下方的系统变量-path中新建三个变量,配置完后确定即可
四、测试
在代码中,需要对net类进行两处修改
net.setpreferablebackend(cv2.dnn.dnn_backend_cuda)net.setpreferabletarget(cv2.dnn.dnn_target_cuda)
之后运行即可支持gpu加速。
stk465厚膜功放音质好不好
四种远程调用的区别和联系
SiC MOSFET:桥式结构中栅极-源极间电压的动作-低边开关关断时的栅极-源极间电压的动作
中国深圳先进院在高分辨率超声成像领域取得重要进展
VCSEL:3D感测领衔 汽车电子行业未来可期
OpenCV配置CUDA以支持GPU加速
基于RL78-FDL库实现RL78G13 Data Flash的读写操作
韩国5G用户数量已达到998万
哪一些因素会影响无人机航测的精度
未来我们的隐私问题会有哪些
怎么样把OpenHarmony烧录到开发板上
国企智慧党建,如何借OA强基层、保廉洁、促活力
桥梁监控解决方案
10K和10A型中频变压器及线圈
建筑工地将安装在线扬尘监测系统的优势
如何测量高压或负电源轨上的电流及测量电流的精度考虑因素
无限数据流量并不是WiFi的唯一威胁 还面临其他一些新兴技术的挑战
u-boot armv8链接脚本
图灵奖正式公布 计算机技术与电影“联姻”
华为p50折叠手机支持无线充电吗