【入坑指南】| OpenCV4.8 + CUDA + 扩展模块支持编译

大家好,今天给大家分享一下最新版本OpenCV4.8如何编译支持CUDA加速,实现深度学习模型部署速度提升。

软件版本支持

CMake3.13 或者以上版本
https://cmake.org/
VS2017专业版或者以上版本
3050ti + CUDA11.3
OpenCV4.8源码包
https://github.com/opencv/opencv/releases/tag/4.8.0
OpenCV4.8 扩展模块源码包
https://github.com/opencv/opencv_contrib/releases/tag/4.8.0

把OpenCV4.8与OpenCV4.8扩展包都解压缩到D盘,目录分别如下:

D:\opencv-4.8.0
D:\opencv_contrib-4.8.0

编译生成

打开CMake,设置好如下的目录选项
在这里插入图片描述
然后点击【Configure】弹出对话框如下:
在这里插入图片描述
点击【Finish】完成 配置生成。然后点击【Generate】完成生成。
然后设置扩展模块路径
在这里插入图片描述
设置完成以后,搜索CUDA关键字,全部勾上相关选项之后继续点击【Configrure】,运行完成以后,再次搜索CUDA关键字,选择如下:
在这里插入图片描述
点击【Generate】,生成如下:
在这里插入图片描述
从newbuild文件夹中选择OpenCV.sln 工程文件 双击打开如下:
在这里插入图片描述
然后切换到Release模式,点击INSTALL右键生成,等待两个小时以后基本上会完成编译,我最终完成编译之后的结果。
在这里插入图片描述
技巧提示:

1.无法下载第三方文件,请手动下载以后放到source/.cache文件夹内相关位置即可。
2.无需编译 xFeature2D、FaceModel、Test等模块(不然需要翻墙下载一些依赖包),统统取消勾选(默认是勾选的) 配置运行测试

重新配置好OpenCV + CUDA的支持,修改包含目录、库目录、链接器,然后设置好新的环境变量路径。启动VS2017,运行OpenCV的人脸检测案例,运行结果如下:
在这里插入图片描述
运行YOLOv8 姿态评估模型,效果如下(只有OpenCV4.7版本以后才支持该模型部署运行)
在这里插入图片描述
其中在OpenCV中启用GPU推理执行,需要设置下面两行代码:

net.setPreferableBackend(cv::dnn::DNN_BACKEND_CUDA);
net.setPreferableTarget(cv::dnn::DNN_TARGET_CUDA);

总结

OpenCV4支持通过GPU实现CUDA加速执行,实现对OpenCV图像处理程序的加速运行,当前支持加速的模块包括如下:

- 图像背景分割
- 视频编解码
- 特征2D
- 卷积滤波
- 图像处理
- 对象检测
- 光流
- 双目视觉
- 深度神经网络

基本上包含了OpenCV图像处理的主要功能,这里有一个地方需要特别注意,就是编译时候选择不同的CUDA版本,对上述模块的支持略微不同。更多OpenCV CUDA函数使用知识可以参考本人新书:
七折优惠专属《OpenCV应用开发:入门、进阶与工程化实践》

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

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

相关文章

JVM虚拟机:各种类型的垃圾回收器参数总结

Parallel常用参数 -XX:SurvivorRatio-XX:PreTenureSizeThreshold 大对象到底多大-XX:MaxTenuringThreshold-XX:+ParallelGCThreads 并行收集器的线程数,同样适用于CMS,一般设为和CPU核数相同-XX:+UseAdaptiveSizePolicy 自动选择各区大小比例CMS常用参数 -XX:+UseConcMarkSwe…

ZooKeeper中bin目录4个脚本执行文件详解

ZooKeeper中bin目录4个脚本执行文件详解 ZooKeeper中bin目录中有如下4个可执行脚本: [rootpoc01 ~]# cd /opt/module/zookeeper-3.4.6/bin/ [rootpoc01 bin]# ls zkCleanup.sh zkCli.sh zkEnv.sh zkServer.sh这些脚本是 ZooKeeper 的一部分,用于管理…

三层交换的原理

一.三层交换技术 1.什么是三层交换机 要实现vlan间通信,就需要路由,解决办法要么是二层交换机加路由器形成单臂路由,要么就是直接使用三层交换机。 ①什么是单臂路由: ②单臂路由实现不同vlan间通信的原理: 路由器…

JVM的类的生命周期

目录 前言 1. 加载(Loading): 2. 验证(Verification): 3. 准备(Preparation): 4. 解析(Resolution): 5. 初始化(Ini…

Ubuntu解决Failed to fetch https://... Could not resolve ‘某个源‘

在我使用sudo apt install subversion的时候遇到报错: 这个报错与Ubuntu操作系统的软件源配置文件有关系。错误提示显示无法解析“mirrors.shanhe.com”地址,这可能是由于更新软件包列表或下载软件包时出现的网络问题。 1.可以先更新一下源试试&#xf…

Vue 子传父 组件传参 defineEmits

defineEmits 属性:用于创建自定义事件,接收子组件传递过来的数据。 注意:如果自定义事件的名称,和原生事件的名称一样,那么只会触发自定义事件。 defineEmits 仅适用于 setup 语法糖,其它写法请见&#x…

SpringBoot+SSM项目实战 苍穹外卖(5)(Redis入门)

继续上一节的内容,本节学习Redis,并实现营业状态设置功能。 目录 Redis环境搭建Redis数据类型Redis常用命令在Java中操作Redis环境搭建java操作常见类型数据 店铺营业状态设置设置营业状态管理端查询营业状态用户端查询营业状态swagger区分管理端和用户端…

CSAPP/ICS 系统级IO笔记

文件描述符:内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件或新建文件时,内核会返回一个文件描述符。读写文件也需要使用文件描述符来指定待读写的文件。 每…

Python移动未标注的图片数据集

Python移动未标注的图片数据集 前言前提条件相关介绍实验环境Python移动未标注的图片数据集情况一:有图,无标注文件代码实现输出结果 情况二:有图,有标注文件,但标注信息为空代码实现输出结果 情况一与情况二同时都考虑…

LabVIEW开发电能质量监测系统

LabVIEW开发电能质量监测系统 本研究基于LabVIEW开发了一个创新的电能质量监测系统,专注于暂态电能质量扰动信号的产生、分析与存储。该系统不仅模拟产生了电压骤降、电压波动、暂态振荡以及电压畸变等关键信号,还能够记录并存储这些扰动信号产生时的波…

Vmware Windows10安装Apache php

文章目录 一、下载必要的软件二、安装Apache三、安装php四、php连接Apache五、测试 一、下载必要的软件 Apache:https://www.apachelounge.com/download/ PHP:http://windows.php.net/download/ 二、安装Apache 将下载的压缩包解压,移动里…

使用 Java 获取电脑性能参数

Java内置的api 不能直接获取电脑的参数,需要借助第三方工具 oshi JavaSE 方式 所需要的 jar com.github.oshi:oshi-core:5.8.0、net.java.dev.jna:jna:5.9.0、net.java.dev.jna:jna-platform:5.9.0 org.slf4j:slf4j-api:1.7.21、org.slf4j:slf4j-simple:1.7.21 实…

MyBatis中的N+1问题,使用ResultSet来解决,需要存储过程【非常详细】

参考 https://mybatis.org/mybatis-3/zh/sqlmap-xml.html https://mybatis.net.cn/sqlmap-xml.html#Result_Maps 基础表sql 订单表 CREATE TABLE test_order (order_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT 订单id,order_name varchar(255) NOT NULL DEFAULT COMME…

KITTI数据集处理为COCO数据集格式

KITTI作为自动驾驶常用数据集,被广泛的应用于自动驾驶目标检测等过程中。 首先是数据集类别合并,原始的KITTI数据集有九个类别,分别是: Car Van Truck Pedestrian Person_sitting Cyclist Tram Misc而我们在使用过程中&#xff0…

HarmonyOS 应用开发 —— 常用装饰器整理

HarmonyOS 应用开发 —— 常用装饰器整理 当前版本:API9 纯 ArcTS 语言和 Stage模式 学习 HarmonyOS 时,我们会用到各种各样的装饰器。 我们使用 DevEco IDLE 进行 HarmonyOS 应用开发时,在任意 .ets 文件中,输入 时&#xff0c…

代码随想录算法训练营第二十六天(回溯算法篇)|39. 组合总和,40. 组合总和Ⅱ

39. 组合总和 题目链接:39. 组合总和 - 力扣(LeetCode) 题目内容:给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 &#xff0…

变量未声明,值是undefined吗?

先看下面的代码输出什么? var name; alert(typeof name); // undefined alert(title); //报错undefined是一个只有一个值的数据类型,这个值就是undefined,在使用var声明变量但并未对其值进行初始化时,这个变量的值就是undefined。…

GO并发编程综合应用

一.GO并发编程综合应用 1.生产者消费者模式 1.1需求分析 ​ 生产者每秒生产一个商品,并通过物流公司取货 ​ 物流公司将商品运输到商铺 ​ 消费者阻塞等待商铺到货,需要消费10次商品 1.2实现原理 1.3代码实现: package mainimport (&q…

Vue学习笔记-Vue3中的shallowReactive和shallowRef

shallowReactive 作用:与reactive作用类似,但只处理对象最外层属性的响应式(浅响应式)使用场景:如果有一个对象数据,结构比较深(内嵌多层对象),但只需要最外层的属性进行…

SpringCloud微服务 【实用篇】| Docker启示录

目录 一:Docker启示录 1. Docker启示录 2. Docker和虚拟机的区别 3. Docker架构 4. Centos7安装Docker 4.1. 卸载 4.2. 安装docker 4.3. 启动docker 4.4. 配置镜像加速 前些天突然发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽…