[C++]使用纯opencv去部署yolov9的onnx模型

【介绍】

部署 YOLOv9 ONNX 模型在 OpenCV 的 C++ 环境中涉及一系列步骤。以下是一个简化的部署方案概述,以及相关的文案。

部署方案概述:

  1. 模型准备:首先,你需要确保你有 YOLOv9 的 ONNX 模型文件。这个文件包含了模型的结构和权重。
  2. 环境配置:安装 OpenCV 库,并确保它支持 ONNX 模型的加载和推理。
  3. 加载模型:使用 OpenCV 的 cv::dnn::readNetFromONNX 函数加载模型。这个函数会读取模型文件,并创建一个可以用于推理的网络对象。
  4. 预处理输入:YOLO 模型通常需要特定格式的输入数据,如特定大小的图像。你需要编写代码来读取原始图像,将其转换为模型所需的格式,并可能需要进行归一化或其他预处理步骤。
  5. 执行推理:将预处理后的输入数据传递给网络对象,执行推理。这通常是通过调用 cv::dnn::Net::forward 函数来完成的。
  6. 后处理输出:模型的输出通常是一个或多个张量,需要后处理才能得到最终的检测结果。这可能涉及解析输出张量,提取边界框、类别和置信度等信息。
  7. 显示结果:最后,你可以使用 OpenCV 的绘图功能在原始图像上显示检测结果。

文案示例:

“在现代计算机视觉应用中,部署高效的目标检测模型至关重要。使用 OpenCV 的 C++ 接口,我们可以轻松加载和部署 YOLOv9 ONNX 模型,实现实时的目标检测。通过准备模型文件、配置开发环境、加载模型、预处理输入数据、执行推理和后处理输出,我们可以在各种应用场景中快速集成 YOLOv9 的强大功能。无论是安全监控、自动驾驶还是智能家居,YOLOv9 与 OpenCV 的结合都为我们提供了强大的工具来检测和识别图像中的目标。”

【效果演示】

【视频演示】

C++使用纯opencv部署yolov9的onnx模型_哔哩哔哩_bilibili使用C++ opencv去部署yolov9的onnx模型,无其他依赖。测试环境vs2019opencv==4.9.0cmake==3.24.3, 视频播放量 128、弹幕量 0、点赞数 2、投硬币枚数 0、收藏人数 0、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:C#使用onnxruntime部署Detic检测2万1千种类别的物体,使用纯opencv部署yolov5目标检测模型onnx,刘宪华巴黎粉丝路透,和老板在一起的时刻,满满的幸福感!,好几个朋友跟我说,这车进不了藏,2024易语言yolo9全网最强框架更新~,【爱心表白代码】身边学编程的朋友还没给你安排上这个爱心代码吗?赶快给她敲一个吧!!,yolov9+deepsort+pyqt5实现目标追踪结果演示,C#利用openvino部署yolov8-onnx目标检测模型,不需要训练?YOLO-World:实时开放词汇目标检测,2024年B站最强OpenCV实战进阶教程!,一周学完帮你少走99%弯路!【图像分割/人脸识别/车辆检测/机器视觉】icon-default.png?t=N7T8https://www.bilibili.com/video/BV1Wt421t79e/

【部分实现代码】

#include <iostream>
#include<opencv2/opencv.hpp>#include<math.h>
#include "yolov9.h"
#include<time.h>using namespace std;
using namespace cv;
using namespace dnn;template<typename _Tp>
int yolov9(_Tp& cls,Mat& img,string& model_path)
{Net net;if (cls.ReadModel(net, model_path, false)) {cout << "read net ok!" << endl;}else {return -1;}//生成随机颜色vector<Scalar> color;srand(time(0));for (int i = 0; i < 80; i++) {int b = rand() % 256;int g = rand() % 256;int r = rand() % 256;color.push_back(Scalar(b, g, r));}vector<OutputSeg> result;if (cls.Detect(img, net, result)) {DrawPred(img, result, cls._className, color);}else {cout << "Detect Failed!" << endl;}system("pause");return 0;
}int main() {string img_path = "E:\\person.jpg";string detect_model_path = "C:\\Users\\Administrator\\Desktop\\yolov9-opencv-det-cplus\\models\\yolov9-c.onnx";Mat img = imread(img_path);Yolov9 task_detect;yolov9(task_detect,img,detect_model_path);    //Opencv detectreturn 0;
}

【测试环境】

vs2019

opencv==4.9.0

cmake==3.24.3

【源码下载】 

https://download.csdn.net/download/FL1623863129/88903814

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

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

相关文章

Flutter Gradle下载失败的解决方案

Flutter Gradle可能会由于网络原因下载失败,这个时候我们可以首先下载Gradle&#xff0c;然后再进行配置。具体步骤如下&#xff1a; 第一步&#xff1a;下载对应版本的gradle 可以通过下面地址下载&#xff0c;也可以百度里面搜对应的版本 【极速下载】gradle各版本快速下载地…

【HTML】HTML基础2(一些常用标签)

目录 例子 首先是网页图标 然后是一些常用标签 插入图片 例子 <!DOCTYPE html> <html><head><link rel"icon" href"img/银河护卫队-星爵.png" type"image/x-icon"><meta charset"utf-8"><title>…

大数据的分类分级管理

一.背景 为了公司给的师带徒&#xff0c;为培训写点材料。让徒弟做事情要有章法&#xff0c;有行业视野&#xff0c;知道方向和资料从哪里去找。 二.参考标准 要管理企业的大数据&#xff0c;从什么地方开始呢&#xff1f;首先应该完成企业数据的分类、分级&#xff0c;或者参…

一文掌握python常用的dict(字典)操作

目录 一、字典的创建与基本特性 1.创建字典 2.字典的基本特性 二、字典的常用操作 1.访问字典中的值 2.添加、修改键值对 3.删除键值对 4.获取字典中的所有键、值和键值对 5.遍历字典 6.查找键是否存在 7.使用 get() 方法获取值 8.合并字典 9.字典排序 10.使用字…

如何限制一个账号只在一处登陆

大家好&#xff0c;我是广漂程序员DevinRock&#xff01; 1. 需求分析 前阵子&#xff0c;和问答群里一个前端朋友&#xff0c;随便唠了唠。期间他问了我一个问题&#xff0c;让我印象深刻。 他问的是&#xff0c;限制同一账号只能在一处设备上登录&#xff0c;是如何实现的…

Javascript:数组的使用

目录 一、前言 二、正文 三、结语 一、前言 为了能存储多个数据&#xff0c;我们接下来介绍数组。 二、正文 数组是一种将一组数据存储在单个变量名下的方式。 let arr[] 声明语法: let 数组名[数据1,数据2,..数据n] 例 let names[小明,小刚,小红,小丽] 数组是按顺序保存…

【大厂AI课学习笔记NO.56】(9)模型评测

作者简介&#xff1a;giszz&#xff0c;腾讯云人工智能从业者TCA认证&#xff0c;信息系统项目管理师。 博客地址&#xff1a;https://giszz.blog.csdn.net 声明&#xff1a;本学习笔记来自腾讯云人工智能课程&#xff0c;叠加作者查阅的背景资料、延伸阅读信息&#xff0c;及学…

Python采集学习笔记-request的get请求和post请求

使用http://httpbin.org测试,一个简单的 HTTP 请求和响应服务。(需联网)1.导入requests包 import requests 2.测试get请求 url http://httpbin.org/get par {key1: value1, key2: value2} # 不带参数请求 r1 requests.get(url) # 带参数请求 r2 requests.get(url, paramspa…

甘特图资源视图和任务视图的区别

甘特图(Gantt chart)是一种常用的项目管理工具,用于直观地展示项目的进度和各项任务的时间安排。甘特图包含资源视图和任务视图两种视角。 一个项目的甘特图demo &#xff1a; https://zz-plan.com/share/87f1340286f1343ba5 资源视图主要显示项目中不同资源的分配和利用情况…

植物神经功能紊乱患者,家属应该怎么照顾!

植物神经功能紊乱181-01-317-367&#xff0c;通常被称为植物人状态&#xff0c;是指由严重脑部受损引起的意识丧失、无法自主呼吸、难以醒来或维持清醒状态的一种严重健康状况。植物神经功能紊乱患者通常面临长期卧床、意识不清、无法言语交流等严重问题&#xff0c;需要家属的…

代码随想录算法训练营Day 36 | LeetCode435. 无重叠区间、LeetCode763.划分字母区间、LeetCode56. 合并区间

LeetCode435. 无重叠区间 和上题引爆气球的逻辑非常像&#xff0c;只要想到左边界排序之后&#xff0c;更新右边界为最小值&#xff0c;则就可以轻松写出代码&#xff0c;如果按照右边界来排序&#xff0c;则就可以省去取最小值的逻辑。 代码如下&#xff1a;时间复杂度O(nlo…

【内推】金山办公 2024届 春季校园招聘

有需要内推的小伙伴吗&#xff1f; 金山办公 各岗位均有 面向应届生春招 QQ群&#xff1a;723529936 内推码&#xff1a;NTASYQI

海外代购系统独立站,商品采集API接口系列

海外代购系统独立站是一个完整的电商平台&#xff0c;专为代购业务设计。这样的系统通常具备商品采集、库存管理、订单处理、支付集成、物流追踪等功能。其中&#xff0c;商品采集是整个系统的基础&#xff0c;而API接口是实现商品采集的关键。 请求示例&#xff0c;API接口接…

使用OpenTelemetry进行监控

工具介绍 注意&#xff1a;该部分介绍摘抄自&#xff1a;搭建高级的性能监控系统(PrometheusGrafanaNode ExporterAlertmanager) - 爱云 Prometheus、Grafana、Node Exporter 和Alertmanager是一组用于监控和可视化系统性能的开源工具。它们通常一起使用&#xff0c;形成一个强…

渗透测试站点推荐

URL编解码站点&#xff1a; http://www.esjson.com/urlEncode.html 在线URL解码编码工具_蛙蛙工具 (iamwawa.cn) 加解密站点&#xff1a; CyberChef (gchq.github.io) ASCII码转换&#xff1a; ASCII编码转换&#xff0c;ASCII码在线查询工具 (qqxiuzi.cn) HTML实体编码…

一些公共方法。utils存放

一、文件下载 1.接口返回文件流 const download0 (data: Blob, fileName: string, mineType: string) > {// 创建 blobconst blob new Blob([data], { type: mineType })// 创建 href 超链接&#xff0c;点击进行下载window.URL window.URL || window.webkitURLconst hr…

大地测量学课堂笔记:1、绪论

慕课网址&#xff1a;https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_https://www.icourse163.org/course/WHU-1464124180?fromsearchPage&outVendorzw_mooc_pcssjg_ 1. 大地测量学的定义 大地测量学是专门研究精确测量…

【C++精简版回顾】18.文件操作

1.文件操作头文件 2.操作文件所用到的函数 1.文件io 1.头文件 #include<fstream> 2.打开文件 &#xff08;1&#xff09;函数名 文件对象.open &#xff08;2&#xff09;函数参数 /* ios::out 可读 ios::in 可…

使用华为云云函数functiongraph

之前使用腾讯云serverless&#xff0c;但是突然开始收费了。所以改用functiongraph 首先登陆华为云。 目录 1.登录华为云 2.在控制台找到functiongraph并开通 3.添加依赖包&#xff1a; 3.1 制作依赖包 3.2引入依赖包 4.发送请求 4.1直接发送 4.1.1uri 4.1.2 请求头…

基础算法 - 快速排序、归并排序、二分查找、高精度模板、离散化数据

文章目录 前言Part 1&#xff1a;排序一、快速排序二、归并排序 Part 2&#xff1a;二分一、二分 - 查找左边界二、二分 - 查找右边界 Part 3&#xff1a;高精度一、高精度加法二、高精度减法三、高精度乘法四、高精度除法 Part 4&#xff1a;离散化一、区间和 前言 由于本篇博…