编译 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。我也没弄懂这个。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Windows、VMware问题集合

Windows、VMware问题集合 一. Windows11安装VMware17提升虚拟机性能1. 桌面右击图标点击属性——>兼容性,找到“以管理员身份运行此程序”勾选,最后点击确定即可。2. 关闭win11的内核隔离功能。 二. VMware虚拟机报错(虚拟化性能计数器需要…

【人工智能入门学习资料福利】

总目录如下(部分截取): 百度网盘链接:https://pan.baidu.com/s/1bfDVG-xcPR3f3nfBJXxqQQ?pwdifu6 提取码: ifu6

【电子通识】USB3.0和USB2.0有什么区别?

版本 USB2.0是2000年4月27日由USB-IF组织提出了USB2.0总线协议规范。 USB3.0是2008年11月17日由USB-IF组织提出了超高速USB3.0规范。 图标对比 USB2.0的标志就是和USB1.1的标志基本上没啥区别,还是以前的那个样子,使用黑色颜色用标识 USB3.0它有一个S…

变态跳台阶,剑指offer

目录 题目: 我们直接看题解吧: 相似题目: 解题方法: 审题目事例提示: 解题思路: 代码实现: 题目地址: 【剑指Offer】9、变态跳台阶 难度:简单 今天刷变态跳台阶&#xf…

不停的挖掘硬盘的最大潜能

从 NAS 上退休的硬盘被用在了监控的存储上了。 随着硬盘使用寿命的接近尾声,感觉就是从高附加值数据到低附加值数据上。监控数据只会保留那么几个月的时间,很多时候都会被覆盖重新写入。 有人问为什么监控数据不保留几年的,那是因为监控数据…

Golang 中的良好代码与糟糕代码

最近,有人要求我详细解释在 Golang 中什么是好的代码和坏的代码。我觉得这个练习非常有趣。实际上,足够有趣以至于我写了一篇关于这个话题的文章。为了说明我的回答,我选择了我在空中交通管理(ATM)领域遇到的一个具体用…

Apache POI简介

三十二、Apache POI 32.1 介绍 Apache POI 是一个处理Miscrosoft Office各种文件格式的开源项目。简单来说就是,我们可以使用POI在Java程序中对Miscrosoft Office各种文件进行读写操作。 一般情况下,POI都是用于操作Excel文件。 Apache POI 的应用场…

【开源】基于JAVA的开放实验室管理系统

项目编号: S 013 ,文末获取源码。 \color{red}{项目编号:S013,文末获取源码。} 项目编号:S013,文末获取源码。 目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实…

LeetCode 2304. 网格中的最小路径代价:DP

【LetMeFly】2304.网格中的最小路径代价:DP 力扣题目链接:https://leetcode.cn/problems/minimum-path-cost-in-a-grid/ 给你一个下标从 0 开始的整数矩阵 grid ,矩阵大小为 m x n ,由从 0 到 m * n - 1 的不同整数组成。你可以…

#gStore-weekly | ​gAnswer源码分析:基于通用数据集的NE、RE服务开发

PART1 简 介 目前基于知识图谱的问答模式有两种,一种是基于信息检索的方式,一种是基于语义分析的方式。前者较之于后者,没有真正关心语义,主要是ranker算法,擅于处理简单问题,后者则是从语义的角度将用户…

数环通入选中国信通院《高质量数字化转型技术方案集(2023)》,积极推动企业数字化转型

近日,中国信息通信研究院“铸基计划”发布《高质量数字化转型技术方案集(2023)》,数环通《数字化协同管理解决方案》成功入选。 随着科技的快速发展和市场竞争的日益激烈,数字化转型已成为企业持续发展和提升竞争力的关…

JetLinks设备接入的认识与理解【woodwhales.cn】

为了更好的阅读体验,建议移步至笔者的博客阅读:JetLinks设备接入的认识与理解 1、认识 JetLinks 1.1、官网文档 官网:https://www.jetlinks.cn/ JetLinks 有两个产品:JetLinks-lot和JetLinks-view 官方文档: JetLi…

WPF树形控件TreeView使用介绍

WPF 中的 TreeView 控件用于显示层次结构数据。它是由可展开和可折叠的 TreeViewItem 节点组成的&#xff0c;这些节点可以无限嵌套以表示数据的层次。 TreeView 基本用法 例如实现下图的效果&#xff1a; xaml代码如下&#xff1a; <Window x:Class"TreeView01.Mai…

优秀智慧园区案例 - 上海世博文化公园智慧园区,先进智慧园区建设方案经验

一、项目背景 世博文化公园是上海的绿色新地标&#xff0c;是生态自然永续、文化融合创新、市民欢聚共享的大公园。作为世博地区的城市更新项目&#xff0c;世博文化公园的建设关乎上海城市风貌、上海文化展示、城市生态环境、市民游客体验、上海服务品牌等&#xff0c;被赋予…

防火墙部署模式 -- 镜像流量(旁路模式)

镜像流量&#xff08;旁路模式&#xff09; 如图&#xff0c;与单臂路由模式不同&#xff0c;旁路模式中&#xff0c;PC的流量不会流经防火墙&#xff0c;就算防火墙宕机也不会影他们之间的数据传输。 镜像的原理是交换机把被镜像端口的流量复制一份&#xff0c;发到监听端口&…

打不开clickonce问题解决过程

1.用户电脑user文件夹下有xx和xx.1两个账户,原先安装在xx账户下,后修了电脑原数据保留在xx.1,新创建XX,之后clickonce就打不开了表现为没有反应,,删除注册表和appdata都只能正常安装,但是不能打开,没有任何报错,发现在我的电脑下打开有这样的提示,,在用户电脑上没有 尝试通过修…

了解CCC认证流程,确保产品合规通过

CCC认证是指中国强制性产品认证制度&#xff0c;也是中国国家质量监督检验检疫总局实施的一项重要认证制度。对于想要在中国市场销售的产品来说&#xff0c;CCC认证是必不可少的步骤。本文将详细介绍CCC认证的流程&#xff0c;帮助您了解并确保产品顺利通过认证。 第一步&#…

智能监控,高效观测 IT 系统瓶颈

前言 云原生时代的监控系统贯穿于移动端、前端、业务服务端、中间件、应用层、操作系统等&#xff0c;渗透 IT 系统的各个环节。因此&#xff0c;在构建 IT 系统之初&#xff0c;就需要考虑如何打造一个完善的监控系统。当面临大量业务流量数据时&#xff0c;借助监控进行问题…

FreeRTOS列表和列表项

FreeRTOS内核调度使用了大量的列表&#xff08;list&#xff09;和列表项&#xff08;listitem&#xff09;数据结构。它的源码中涉及到很多列表的操作&#xff0c;对于FreeRTOS来说&#xff0c;列表就是它最基础的一部分&#xff0c;列表被用作FreeRTOS调度器使用&#xff0c;…

C语言--判断年月日是否合理

一.题目描述 比如输入2001&#xff0c;2&#xff0c;29&#xff0c;输出&#xff1a; 不合理 。因为平年的二月只有28天 比如输入2000&#xff0c;6&#xff0c;31&#xff0c;输出&#xff1a;不合理。因为6月是小月&#xff0c;只有30天。 二.思路分析 本题主要注意两个问…