0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

OpenCV配置CUDA以支持GPU加速

新机器视觉 来源:小半仙IoT 2023-01-09 10:16 次阅读

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。

3ada3b82-8f40-11ed-bfe3-dac502259ad0.png

之后点configure进行第一次配置,弹出窗口第一个选择visual studio 16 2019,第二个选择x64,其余保持默认,点击finish,等待配置完成后不出意外会有3个错误和警告,需要重点关注,这些错误会影响到后面的编译。

3af957a6-8f40-11ed-bfe3-dac502259ad0.png

我的错误为 (1)跟python2.7相关的错误,可忽略

3b206062-8f40-11ed-bfe3-dac502259ad0.png

(2)FFMPEG的相关文件下载失败,这里需要自己从自己选择的编译输出路径中找到 CMakeDownloadLog.txt 打开(我的路径为H:opencv_pasksopencv ewbuildCMakeDownloadLog.txt),里面提供了FFMPEG相关文件的链接地址,下载即可。最后我们统一放入相关文件夹内(所以这里只需先下载下来,暂不用放入任何文件夹内)

3b301840-8f40-11ed-bfe3-dac502259ad0.png

(3)这里只是个 warning 不是 error ,可忽略

3b5031a2-8f40-11ed-bfe3-dac502259ad0.png

(当然有的人可能还会有和 ippicv 相关的错误,和 ffmpeg 同理,找到对应的文件链接下载即可) 2、勾选相应配置 (1)在 search 搜索框里搜索 cuda,勾选 OPENCV_DNN_CUDA 和 WITH_CUDA 两个选项

3b68e24c-8f40-11ed-bfe3-dac502259ad0.png

(2)搜索 example,勾选 BUILD_EXAMPLES 和 INSTALL_PYTHON_EXAMPLES(这一步可不用)

3b8488d0-8f40-11ed-bfe3-dac502259ad0.png

(3)搜索 non,勾选OPENCV_ENABLE_NONFREE

3ba24d70-8f40-11ed-bfe3-dac502259ad0.png

(4)搜索 mod,OPENCV_EXTRA_MODULES_PATH 选择刚刚下载的 opencv_contrib 路径,需要到 modules 文件夹下(我的为H:/opencv_pasks/opencv_contrib-4.6.0/modules, 注意这里是正斜杠而不是反斜杠) 以上完成之后再次点击 configure 进行第二次配置,等待配置完成后可继续下一步。

3bbd3a9a-8f40-11ed-bfe3-dac502259ad0.png

这里不出意外会多出几个红色的错误警告 例如:wechat_qrcode、xfeatures2d、face相关等,基本都是因为下载不到文件引起,需要自己手动下载

(5)搜索 cudnn,勾选 WITH_CUDNN(我的默认已经勾选)

3bda9dce-8f40-11ed-bfe3-dac502259ad0.png

(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,同样右键生成,过程大约几分钟,等待生成完成即可。

三、配置环境变量

此电脑右键-属性-高级系统设置-高级-环境变量 在上方的用户变量中新建两个变量

3bf306f2-8f40-11ed-bfe3-dac502259ad0.png

在下方的系统变量-Path中新建三个变量,配置完后确定即可

3c032b90-8f40-11ed-bfe3-dac502259ad0.png

四、测试

在代码中,需要对net类进行两处修改

net.setPreferableBackend(cv2.dnn.DNN_BACKEND_CUDA)
net.setPreferableTarget(cv2.dnn.DNN_TARGET_CUDA)

之后运行即可支持GPU加速。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • NVIDIA
    +关注

    关注

    14

    文章

    4592

    浏览量

    101719
  • gpu
    gpu
    +关注

    关注

    27

    文章

    4417

    浏览量

    126705
  • OpenCV
    +关注

    关注

    29

    文章

    611

    浏览量

    40778
  • CUDA
    +关注

    关注

    0

    文章

    119

    浏览量

    13462

原文标题:OpenCV配置CUDA以支持GPU加速

文章出处:【微信号:vision263com,微信公众号:新机器视觉】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    OpenCV+CUDA编译实现YOLOv5能加速

    对比一下,加速效果真得是杠杠滴!所以值得编译OpenCV+CUDA支持,因为它不光加速深度学习模型推理,对传统图像处理均有加速
    的头像 发表于 07-18 10:27 1984次阅读
    <b class='flag-5'>OpenCV+CUDA</b>编译实现YOLOv5能<b class='flag-5'>加速</b>

    NVIDIA CUDA深度神经网络库实现高性能GPU加速

    NVIDIA CUDA 深度神经网络库(cuDNN)是一个 GPU 加速的深度神经网络基元库,能够以高度优化的方式实现标准例程(如前向和反向卷积、池化层、归一化和激活层)。
    发表于 07-23 11:04 1343次阅读

    OpenCV4.8 CUDA编程代码教程

    OpenCV4支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的
    的头像 发表于 12-05 09:56 452次阅读
    <b class='flag-5'>OpenCV</b>4.8 <b class='flag-5'>CUDA</b>编程代码教程

    CUDA/OpenCL支持

    是否有关于GRID vGPU的CUDA / OpenCL支持的更新信息?以上来自于谷歌翻译以下为原文Is there any updated information about CUDA/OpenCL support for G
    发表于 09-07 16:42

    关于K2 passthrough的CUDA

    工作。对于Premiere Pro的使用,我们需要CUDA强制渲染GPU而不是使用CPU来渲染视频。是否支持使用NVIDIA GRID K2卡?以上来自于谷歌翻译以下为原文We have
    发表于 09-10 17:18

    在K520上能使用两个GPU进行CUDA作业吗

    如果没有其他用户共享K520,您是否可以抓取两个GPU进行CUDA计算作业?我们的应用程序使用GPU进行显示和计算。当我们在AWS K520实例上运行时,CUDA只能看到K520上的一
    发表于 09-26 15:23

    【NanoPC-T4试用体验】GPU测试+OpenCV配置

    =a2h3j.8428770.3416059.1</span>2.配置OpenCV(1).打开终端,首先输入以下命令切换为root用户!su(2)更改路径cd /root/(3) git一下
    发表于 11-12 13:03

    GPU加速matlab程序

    最近遇到了一个加速matlab程序的问题,不知道如何利用GPU,以及使用GPU的先决条件,是不是GPU加速必须要用
    发表于 03-30 11:21

    linux安装GPU显卡驱动、CUDA和cuDNN库

    /deviceQuery若看到类似以下信息则说明 cuda 已安装成功: 7、安装cuDNN cuDNN是GPU加速计算深层神经网络的库。首先去官网 https://developer.nvidia.com
    发表于 07-09 07:45

    GPU加速的L0范数图像平滑(L0 Smooth)【CUDA

    GPU 加速的 L0 范数图像平滑(L0 Smooth)【CUDA
    发表于 07-08 12:10

    opencv3.0.0(x86)安装教程与配置设置教程

    说 bye bye,逐渐抛弃 C 版本   更多的硬件加速,Neon、OpenCL、CUDA   支持更多编程语言
    发表于 12-14 18:30 2次下载

    CUDA学习笔记第一篇:一个基本的CUDA C程序

    1、CUDA的简介 2、GPU架构和CUDA介绍3、CUDA架构4、开发环境说明和配置5、开始第一个Hello
    的头像 发表于 12-14 23:40 687次阅读

    CUDA简介: CUDA编程模型概述

    CUDA 编程模型中,线程是进行计算或内存操作的最低抽象级别。 从基于 NVIDIA Ampere GPU 架构的设备开始,CUDA 编程模型通过异步编程模型为内存操作提供加速
    的头像 发表于 04-20 17:16 2496次阅读
    <b class='flag-5'>CUDA</b>简介: <b class='flag-5'>CUDA</b>编程模型概述

    如何在OpenCV中实现CUDA加速

    OpenCV4.x中关于CUDA加速的内容主要有两个部分,第一部分是之前OpenCV支持的图像处理与对象检测传统算法的
    的头像 发表于 09-05 10:03 4526次阅读

    OpenCV4.8+CUDA+扩展模块支持编译指南

    OpenCV4.8+CUDA+扩展模块支持编译指南
    的头像 发表于 11-30 16:45 364次阅读
    <b class='flag-5'>OpenCV4.8+CUDA</b>+扩展模块<b class='flag-5'>支持</b>编译指南