编译 CUDA加速的 OpenCV-4.8.0 版本

文章目录

  • 前言
  • 一、编译环境
  • 二、前期准备
  • 三、CMake编译
  • 四、VS编译OpenCV.sln
  • 五、问题


前言

由于项目需要用上CUDA加速的OpenCV,编译时也踩了不少坑,所以这里记录一下。


一、编译环境

我的编译环境是:
Win10 + RTX4050 + CUDA-12.0 + CUDNN 8.9.6.50 + VS2019 + CMake-3.28.0 + OpenCV-4.8.0 + OpenCV_Contrib-4.8.0
额外注意的是:CUDA_ARCH_BIN=7.5;8.6;8.9;9.0

二、前期准备

  1. 如果你的编译环境跟我一模一样的话,你可以直接下载百度网盘,提取码:1215,里面的include/lib/bin文件夹直接拷贝出去用就可以了。
  2. 如果有不同之处,一定要重新编译,不然就会报错:
    error: (-216: No CUDA support) OpenCV was not build to work with the selected device.
  3. 上面的链接下载下来后,里面的source包含了 OpenCV-4.8.0 + OpenCV_Contrib-4.8.0的zip文件夹,就不用直接去官网下载了。
  4. 如果重新编译,记得把 source/.cache文件夹,放到解压后的 OpenCV 4.8.0文件夹下。
    在这里插入图片描述

三、CMake编译

接下来,就照着我的截图进行选择。

  1. 先按下图选择,点击Configure。
    在这里插入图片描述

  2. 完成之后,会一片红
    在这里插入图片描述

  3. 去除Python相关;
    在这里插入图片描述

  4. 去除Java相关;
    在这里插入图片描述

  5. 去除JS相关;
    在这里插入图片描述

  6. 去除tests相关;
    在这里插入图片描述

  7. 勾选CUDA相关
    在这里插入图片描述

  8. 将 OpenCV-Contrib 加入到项目中
    在这里插入图片描述

  9. 勾选 build_opencv_world
    在这里插入图片描述

  10. 去除 OpenCV_ENABLE_NONFREE
    在这里插入图片描述

  11. 勾选 ENABLE_FAST_MATH
    在这里插入图片描述

  12. 再次点击Configure

  13. 完成之后,选择CUDA_ARCH_BIN并勾选 CUDA_FAST_MATH
    在这里插入图片描述

  14. 再次点击Configure;

  15. 如果这次完成之后,没有红色,那么就直接Generate,done就结束了。


四、VS编译OpenCV.sln

  1. 打开 build/OpenCV.sln
  2. 选择 Release/x64,右键 ALL_BUILD - >生成即可。
    在这里插入图片描述
  3. 如果全部成功,那么再右键INSTALL -> 生成即可。这个会帮你整理生成的include/lib/bin文件夹
    在这里插入图片描述

五、问题

  1. .cache文件夹一定要提前放到 OpenCV 4.8.0 文件夹下,不然你会在CMake的时候收获一堆Warning,就是因为下载这堆东西失败。
  2. CuDNN下载之后,记得放到CUDA文件夹下,然后添加相应的环境变量。
  3. 我在使用上面的版本时,发现,对于读取同一个model进行推理,Release/cuda下GPU的利用率是30%,但是Debug/cuda的利用率只有5%左右。但是你如果说GPU没用上,其速度又比单纯使用CPU快一倍。目前还没弄懂。
  4. 另外,我在debug/cpu下的内存大概是200m左右,但是debug/gpu跑到了5.7G。我也没弄懂这个。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/159492.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码混淆不再愁:一篇掌握核心技巧

​ 1. 概述 代码混淆是将计算机程序的代码转换成一种功能上等价,但是难以阅读和理解的形式。 对于软件开发者来说,代码混淆可以在一定程度上保护程序免被逆向。 对于逆向工程师来说,学习代码混淆可以帮助我们研究反混淆技术。 2. 常见混淆…

半导体工艺控制设备1

半导体工艺控制设备对芯片良率至关重要,随着制程微缩需求倍增。工艺节点每缩减一代,工艺中产生的致命缺陷数量会增加 50%,因此每一道工序的良品率都要保持在非常高的水平才能保证最终的良品率。当工序超过 500 道时,只有保证每一道…

污水处理智能化:污水处理拓扑图的未来发展趋势

随着城市化进程的不断加速,城市污水处理已经成为了一个重要的问题。污水处理不仅关系到城市环境的质量,还直接影响着人们的生活质量和健康。污水处理拓扑图作为一种新型的污水处理技术,已经被广泛应用于各种污水处理设施中。本文将介绍污水处…

如何判断客户对你是不是真的满意

我们平时生活中打个滴滴、叫个外卖,都会让做星级评价,就算去银行办业务,也会让按个按钮,对窗口的服务做个评价…… 再问一个问题:客户满意了,您的生意就一定好吗? 一、满意度:质量监…

2023 IDEA大会开幕 共探AI新篇章下的技术创新与创业

11月22日,AI与数字经济领域一年一度的科创盛会,2023 IDEA大会在深圳举行。IDEA研究院创院理事长、美国国家工程院外籍院士沈向洋在会上发表主旨演讲,发布IDEA研究院的重磅研产结晶与市场化成果;在大咖云集的论坛环节,多…

AIOps探索 | 应急处置中排障的降本增效方法探索(上)

文章来源:公众号ID-布博士(擎创科技资深产品专家) 哈喽~友友们大家好,最近运维界也是蛮热闹的,前有语雀多次崩溃,后有阿里全系产品集体故障,不管是哪种,都足够逼疯一个运维工程师。…

Web自动化测试流程:从入门到精通,帮你成为测试专家!

Web应用程序在今天的软件开发中占据着越来越重要的地位。保证Web应用程序的质量和稳定性是非常必要的,而自动化测试是一种有效的方法。本文将介绍Web自动化测试流程,并提供代码示例。 步骤一:选取测试工具 选择适合自己团队的自动化测试工具…

数环通对企业销售业务流程(O2C)的成熟度模型分享

保持紧密的客户关系,给客户留下良好的第一印象至关重要,而从下单到顺利履约是实现这一目标的最重要一环。 客户在做出购买决策后往往在最开始是充满了正向情绪(例如兴奋、期待),但随着时间的推移,焦虑感会持…

【擎标】CCID信息系统服务商交付能力等级认证标准

为顺应信息技术服务业发展趋势及市场需求,维护市场秩序,加强行业自律,促进信息系统服务商交付能力的不断提高,增强信息系统服务商创新能力和国际竞争力,支撑信息系统服务商转型提升,中国软件行业协会、企业…

vscode-insiders Remote-SSH XHR failed无法访问远程服务器

问题概述: destFolder/home/apple/.vscode-server-insiders > destFolder2/vscode-cli-05cd2640ec8a106a4ee99cb38e6ee34fbec04f11.tar.gz > 194f252f7426:trigger_server_download_end > Waiting for client to transfer server archive... > W…

值得考虑的10大开源的ERP系统

有许多开源的企业资源计划(ERP)系统可供选择。这些系统提供了一整套业务管理工具,涵盖了财务、人力资源、供应链管理等多个领域。以下是一些知名的开源ERP产品: NO1.Odoo ERP 了解更多:http://www.odoochina.com.cn/…

JOSEF信号继电器 JX-18A/2 电压 220VAC辅助电源 板后接线

JX-18/2A系列信号继电器 JX-18A/2A1信号继电器; JX-18A/2A2信号继电器; JX-18B /2A1信号继电器; JX-18B/2A2信号继电器; JX-18C/2A1信号继电器; JX-18C/2A2信号继电器; JX-18E/2A1信号继电器; JX-18E/2A2信号继电器; JX-18D/2A1信号继电器; JX…

UVA11584划分成回文串 Partitioning by Palindromes

划分成回文串 Partitioning by Palindromes 题面翻译 回文子串(palind) 问题描述: 当一个字符串正序和反序是完全相同时,我们称之为“回文串”。例如“racecar”就是一个回文串,而“fastcar”就不是。现在给一个字符串s,把它分…

二、Gitee使用方法

目录 (1)首先可以注册一个 gitee 账号,注册很方便,自行注册 (2)登陆后进入你的主页 (3)创建仓库 (3)克隆 (4)代码提交 &#xf…

银升玻璃能源数据采集监控方案

项目背景 监控配电房电表的电压、电流、功率、总电能等数据。 监控配电房变压器的电流、温度数据,在数据超出额定指标时,进行报警推送。 现场调研情况 经过现场调研,共有3个变压器房,有不同类型的电表。具体如下表&#xff1a…

Spring过滤器和拦截器的区别

📑前言 本文主要Spring过滤器和拦截器的区别的问题,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句&#x…

【MATLAB源码-第86期】基于matlab的QC-LDPC码性能仿真,输出误码率曲线。

操作环境: MATLAB 2022a 1、算法描述 QC-LDPC(准循环低密度奇偶校验)编码是一种高效的错误校正编码方式,广泛应用于通信系统和数据存储中以提高数据的可靠性。它是低密度奇偶校验(LDPC)编码的一种特殊形…

普乐蛙VR航天航空巡展项目来到了第七站——绵阳科博会

Hi~ 你有一份邀约请查收 11月22日—26日绵阳科博会 普乐蛙展位号:B馆科技体验区(1) 邀你体验趣味VR科普,探索科技新发展 第十一届中国(绵阳)科技城国际科技博览会 绵阳科博会自2013年创办以来,已连续成功举办十届,已有近7000家单位…

怎样实现内网穿透?

第一步:cpolar是一种安全的内网穿透云服务,它将内网下的本地服务器通过安全隧道暴露至公网。使得公网用户可以正常访问内网服务。打开网址 cpolar 下载 。 步骤: 打开网站>点击免费试用>创建账号>下载应用一直点下一步下载完成。第…