当前位置: 首页 > news >正文

[深度学习]基于C++和onnxruntime部署yolov10的onnx模型

基于C++和ONNX Runtime部署YOLOv10的ONNX模型,可以遵循以下步骤:

  1. 准备环境:首先,确保已经下载后指定版本opencv和onnruntime的C++库。

  2. 模型转换:按照官方源码:https://github.com/THU-MIG/yolov10 安装好yolov10环境并将YOLOv10模型转换为ONNX格式。这通常涉及使用深度学习框架(如PyTorch或TensorFlow)加载原始模型,并导出为ONNX格式。转换指令

    # End-to-End ONNX
    yolo export model=jameslahm/yolov10{n/s/m/b/l/x} format=onnx opset=13 simplify
    # Predict with ONNX
    yolo predict model=yolov10n/s/m/b/l/x.onnx
  3. C++环境配置:在CMakeLists.txt项目中正确引用了opencv和ONNX Runtime的头文件,并链接到相应的库。这允许在C++代码中使用ONNX Runtime的功能。

  4. 加载模型:使用ONNX Runtime的API加载转换后的YOLOv10 ONNX模型。

  5. 执行推理:通过ONNX Runtime的推理引擎,将图像数据输入到模型中,并执行目标检测任务。

  6. 处理结果:解析模型输出的结果,这通常涉及将输出的张量数据转换为可理解的检测结果,如边界框坐标和类别标签。

通过这些步骤,可以在C++环境中利用ONNX Runtime高效地部署YOLOv10模型,实现实时的目标检测功能。

【测试环境】

windows10 x64
vs2019
cmake==2.24.3
onnxruntime==1.12.0
opencv==4.7.0
【使用步骤】
首先cmake生成exe文件,然后将onnxruntime.dll和onnxruntime_providers_shared.dll放到exe一起,不然会提示报错0xc000007b,这是因为系统目录也有个onnxruntime.dll引发冲突,并把car.mp4也放到exe一起。运行直接输入
yolov10.exe C:\Users\Administrator\Desktop\yolov10-onnx-cplus\models\yolov10n.onnx
注意onnx路径要是你真实路径我的onnx路径是我桌面上地址

【代码调用】

注意onnxruntime使用的cpu版本库,如需使用GPU还需要修改代码才行

#include "YOlov10Manager.h"
#include <iostream>
#include <opencv2/opencv.hpp>int main(int argc, char const *argv[])
{std::string model_path = argv[1];cv::namedWindow("yolov10", cv::WINDOW_AUTOSIZE);Yolov10Manager detector(model_path);cv::VideoCapture cap("car.mp4");//这个地方也可以修改成视频路径或者摄像头索引if (!cap.isOpened()){std::cerr << "ERROR! Unable to open camera\n";return -1;}cv::Mat frame;std::cout << "Start detect" << std::endl << "Press any key to terminate" << std::endl;for (;;){cap.read(frame);if (frame.empty()){std::cerr << "ERROR! blank frame grabbed\n";break;}auto timer = cv::getTickCount();std::vector<Detection> detections = detector.Inference(frame);double fps = cv::getTickFrequency() / ((double)cv::getTickCount() - timer);cv::putText(frame, "FPS: " + std::to_string(fps), cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 255, 0), 2, 8);cv::Mat resultImg = detector.DrawImage(frame, detections);cv::imshow("yolov10", resultImg);if (cv::waitKey(5) >= 0)break;}return 0;
}

【视频演示】

基于C++和onnxruntime部署yolov10的onnx模型_哔哩哔哩_bilibili测试环境:windows10 x64vs2019cmake==2.24.3onnxruntime==1.12.0opencv==4.7.0使用步骤:首先cmake生成exe文件,然后将onnxruntime.dll和onnxruntime_providers_shared.dll放到exe一起,不然会提示报错0xc000007b,这是因为系统目录也有个onnxruntime.dll引发冲突,并把c, 视频播放量 4、弹幕量 0、点赞数 0、投硬币枚数 0、收藏人数 1、转发人数 0, 视频作者 未来自主研究中心, 作者简介 未来自主研究中心,相关视频:易语言部署yolox的onnx模型,yolov5最新版onnx部署Android安卓ncnn,C#使用纯opencvsharp部署yolov8-onnx图像分类模型,老师可真会玩!,使用C#部署yolov8的目标检测tensorrt模型,C# winform部署yolov10的onnx模型,YOLOv8检测界面-PyQt5实现,2024年新版【YOLOV5从入门到实战教程】B站最良心的YOLOV5全套教程(适合小白)含源码!—YOLOV5、YOLOV5实战、目标检测、计算机视觉,C#使用onnxruntime部署Detic检测2万1千种类别的物体,使用纯opencv部署yolov8目标检测模型onnxicon-default.png?t=N7T8https://www.bilibili.com/video/BV1Zw4m1v7iz/?vd_source=989ae2b903ea1b5acebbe2c4c4a635ee

【源码下载】

相关文章:

[深度学习]基于C++和onnxruntime部署yolov10的onnx模型

基于C和ONNX Runtime部署YOLOv10的ONNX模型&#xff0c;可以遵循以下步骤&#xff1a; 准备环境&#xff1a;首先&#xff0c;确保已经下载后指定版本opencv和onnruntime的C库。 模型转换&#xff1a;按照官方源码&#xff1a;https://github.com/THU-MIG/yolov10 安装好yolov…...

Spring-事件

Java 事件/监听器编程模型 设计模式-观察者模式的拓展 可观察者对象(消息发送者) Java.util.Observalbe观察者 java.util.Observer 标准化接口(标记接口) 事件对象 java.util.EventObject事件监听器 java.util.EventListener public class ObserverDemo {public static vo…...

delmia的工序设置

process的设置需要在workcell sequuencing里面去设置...

【JavaEE精炼宝库】多线程(5)单例模式 | 指令重排序 | 阻塞队列

目录 一、单例模式&#xff1a; 1.1 饿汉模式&#xff1a; 1.2 懒汉模式&#xff1a; 1.2.1 线程安全的懒汉模式&#xff1a; 1.2.2 线程安全的懒汉模式的优化&#xff1a; 二、指令重排序 三、阻塞队列 3.1 阻塞队列的概念&#xff1a; 3.2 生产者消费者模型&#xf…...

[图解]《分析模式》漫谈03-Party是什么

1 00:00:00,790 --> 00:00:03,930 今天我们来看一下&#xff0c;Party是什么 2 00:00:05,710 --> 00:00:07,470 当然我们这里说的不是政治的 3 00:00:07,880 --> 00:00:08,350 Party 4 00:00:09,230 --> 00:00:11,110 是《分析模式》里面的一个用词 5 00:00:14…...

【Numpy】一文向您详细介绍 np.abs()

【Numpy】一文向您详细介绍 np.abs() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;曾…...

【AI绘画】Stable Diffusion 3开源

Open Release of Stable Diffusion 3 Medium 主要内容 Stable Diffusion 3是Stability AI目前为止最先进的文本转图像开放源代码算法。 这款模型的小巧设计使其完美适合用于消费级PC和笔记本电脑&#xff0c;以及企业级图形处理单元上运行。它已经满足了标准化的文字转图像模…...

使用ant-design/cssinjs向plasmo浏览器插件的内容脚本content中注入antd的ui组件样式

之前写过一篇文章用来向content内容脚本注入antd的ui&#xff1a;https://xiaoshen.blog.csdn.net/article/details/136418199&#xff0c;但是方法就是比较繁琐&#xff0c;需要将antd的样式拷贝出来&#xff0c;然后贴到一个单独的css样式文件中&#xff0c;然后引入到内容脚…...

南京威雅学校:初中转轨国际化教育,她们打开了成长的另一种可能

“上了大学就轻松了。” 又是一年高考季&#xff0c;每每回想起十八岁前那些没日没夜埋头学习的日子&#xff0c;已经为人父母的你是不是也忍不住想要孩子气地吐槽一句&#xff0c;“骗人”——人不会在一场考试后瞬间长大&#xff0c;试卷里也没有人生的全部答案。 三年前&a…...

Linux | 标准IO编程

Linux | 标准IO编程 时间:2024年6月8日23:03:43 文章目录 `Linux` | 标准`IO`编程1.标准`IO`编程1-1.流的打开函数fopen()1-2.流的关闭函数fclose()1-3.错误处理函数perror()函数strerror()errno 变量总结1-4.流的读写1-4-1.按字符(字节)输入/输出实例1-4-2.按行输入/输出1-…...

从ES的JVM配置起步思考JVM常见参数优化

目录 一、真实查看参数 &#xff08;一&#xff09;-XX:PrintCommandLineFlags &#xff08;二&#xff09;-XX:PrintFlagsFinal 二、堆空间的配置 &#xff08;一&#xff09;默认配置 &#xff08;二&#xff09;配置Elasticsearch堆内存时&#xff0c;将初始大小设置为…...

milvus的GPU索引

前言 milvus支持多种GPU索引类型&#xff0c;它能加速查询的性能和效率&#xff0c;特别是在高吞吐量&#xff0c;低延迟和高召回率的场景。本文我们将介绍milvus支持的各种GPU索引类型以及它们适用的场景、性能特点。 下图展示了milvus的几种索引的查询性能对比&#xff0c;…...

CleanMyMac2024最新免费电脑Mac系统优化工具

大家好&#xff0c;我是你们的好朋友——软件评测专家&#xff0c;同时也是一名技术博主。今天我要给大家种草一个超级实用的Mac优化工具——CleanMyMac&#xff01; 作为一个长期使用macOS的用户&#xff0c;我深知系统运行时间长了&#xff0c;缓存文件、日志、临时文件等都会…...

catia/delmia的快捷图标模式最多12个

这儿最多显示12个 根据官方文档 If you installed a configuration containing more than 12 workbenches (such as the "AL2" configuration), only the first 12 workbenches are displayed in the Favorites list. The other workbenches do not appear in the l…...

磁盘性能概述与磁盘调度算法

目录 1. 磁盘性能概述 1. 数据传输速率 2. 寻道时间 3. 旋转延迟 4. 平均访问时间 2. 早期的磁盘调度算法 1. FIFO&#xff08;First-In-First-Out&#xff09;调度算法 2. SSTF&#xff08;Shortest Seek Time First&#xff09;调度算法 3. SCAN&#xff08;Elevator…...

chrome浏览器设置--disable-web-security解决跨域

在开发人员于后台进行接口测试的时候&#xff0c;老是遇到跨域问题&#xff0c;这时前端总是会让后台添加跨域请求头来允许跨域请求&#xff0c;今天介绍一个简单的方法跨过这一步操作的设置。 –disable-web-security参数&#xff0c;禁用同源策略&#xff0c;利于开发人员本…...

Android中蓝牙设备的状态值管理

在Android中&#xff0c;蓝牙状态可以通过多种方式来描述&#xff0c;主要包括蓝牙适配器状态、蓝牙设备连接状态以及蓝牙广播状态&#xff0c;其关键的蓝牙状态实现类有BluetoothAdapter、BluetoothDevicePairer、BluetoothDevice、BluetoothProfile&#xff0c;详细介绍如下&…...

关于ReactV18的页面跳转传参和接收

一、使用路由方式进行传参和接收&#xff08;此处需使用 useNavigate 和 useParams 两个hooks&#xff09; 1 首先需要配置好路由形式如下 :id(参数) { path: "/articleDetail/:id", element: lazyElement(<ArticleDetail />), }, 2 传递参数 使用 useNaviga…...

南京观海微电子-----PCB设计怎样降低EMI

开关模式电源是AC-DC或DC-DC电源的通用术语&#xff0c;这些电源使用具有快速开关动作的电路进行电压转换/转换(降压或升压)。随着每天开发出更多的设备(潜在的EMI受害者)&#xff0c;克服EMI成为工程师面临的主要挑战&#xff0c;并且实现电磁兼容性(EMC)与使设备正常运行同等…...

黑苹果/Mac如何升级 Mac 新系统 Sequoia Beta 版

Mac升级教程 有必要提醒一下大家&#xff0c;开发者测试版系统一般是给开发者测试用的&#xff0c;可能存在功能不完善、部分软件不兼容的情况&#xff0c;所以不建议普通用户升级&#xff0c;如果实在忍不住&#xff0c;升级之前记得做好备份。 升级方法很简单&#xff1a; …...

2024年主流工单系统横向对比

一&#xff1a;智齿科技 智齿客服App可以接收工单、查看工单、分配工单、处理工单&#xff0c;客户问题随时随地快速解决。 与云客户中心实时连接&#xff0c;客户以往的浏览轨迹、聊天信息、通话记录、工单历史一目了然。 配合智齿云呼叫中心/机器人客服/人工在线客服&…...

实用软件下载:Studio One最新安装包及详细安装教程

Studio One 6是一款功能丰富、专业级的音乐制作软件&#xff0c;它具备灵活的工作流程和高效的团队协作能力&#xff0c;能帮助用户实现高质量的音乐创作和制作。 智能模板更快的启动&#xff0c;全新的智能模板为你手头的任务提供了必要的工具集&#xff0c;包括基本录制、混音…...

网络安全练气篇——常见服务端口对应漏洞

常见的端口所对应的已知漏洞 21 FTP服务的数据传输端口 22 FTP服务的连接端口&#xff0c;可能存在 弱口令暴力破解 389 LDAP目录访问协议&#xff0c;有可能存在注入、弱口令 443 HTTPS端口&#xff0c;心脏滴血等与SSL有关的漏洞 445 SMB服务端口&#xff0c;可能存…...

WPF学习(3)--不同类通过接口实现同种方法

一、接口概述 1.接口的概念 在C#中&#xff0c;接口&#xff08;interface&#xff09;是一种引用类型&#xff0c;它定义了一组方法、属性、事件或索引器&#xff0c;但不提供实现。接口只定义成员的签名&#xff0c;而具体的实现由实现接口的类或结构体提供。接口使用关键字…...

体验版小程序访问不到后端接口请求失败问题解决方案

文章目录 解决方案一&#xff1a;配置合法域名解决方案二&#xff1a;开发调试模式第一步&#xff1a;进入开发调试模式第二步&#xff1a;启用开发调试 注意事项结语 &#x1f389;欢迎来到Java面试技巧专栏~探索Java中的静态变量与实例变量 ☆* o(≧▽≦)o *☆嗨~我是IT陈寒&…...

【Linux文件篇】磁盘到用户空间:Linux文件系统架构全景

W...Y的主页 &#x1f60a; 代码仓库分享 &#x1f495; 前言&#xff1a;我们前面的博客中一直提到的是被进程打开的文件&#xff0c;而系统中不仅仅只有被打开的文件还有很多没被打开的文件。如果没有被打开&#xff0c;那么文件是在哪里进行保存的呢?那我们又如何快速定位…...

数据分析-Excel基础函数的使用

Excel基础函数&#xff1a; sum:求和 sumif:单条件求和 sumifs:多条件求和 subtotal:根据筛选求和 if:逻辑判断 vlookup:连接匹配数据 match:查找数值在区域中的位置 index:根据区域的位置返回数值 match、index:一起使用&#xff1a;自动根据列名查找数据 sumifs、match、ind…...

速盾的防护策略有哪些?

在当今数字化时代&#xff0c;网络安全至关重要&#xff0c;而速盾作为一款优秀的安全防护工具&#xff0c;拥有一系列全面且有效的防护策略。 首先&#xff0c;速盾采用了先进的访问控制策略。通过严格的身份验证和授权机制&#xff0c;确保只有合法的用户和应用程序能够访问特…...

LabVIEW RT在非NI硬件上的应用与分析

LabVIEW RT&#xff08;实时操作系统&#xff09;可运行在非NI&#xff08;National Instruments&#xff09;硬件上&#xff0c;如研华工控机&#xff0c;但需要满足特定硬件要求。本文从硬件要求、开发和运行差异、可靠性、稳定性、优势和成本等多角度详细分析在非NI硬件上运…...

使用Python批量处理Excel的内容

正文共&#xff1a;1500 字 10 图&#xff0c;预估阅读时间&#xff1a;1 分钟 在前面的文章中&#xff08;如何使用Python提取Excel中固定单元格的内容&#xff09;&#xff0c;我们介绍了如何安装Python环境和PyCharm工具&#xff0c;还利用搭好的环境简单测试了一下ChatGPT提…...

做搜狗网站排名软/池州网络推广

2241: [SDOI2011]打地鼠 Time Limit: 10 Sec Memory Limit: 512 MB Submit: 877 Solved: 557Description 打地鼠是这种一个游戏&#xff1a;地面上有一些地鼠洞&#xff0c;地鼠们会不时从洞里探出头来非常短时间后又缩回洞中。玩家的目标是在地鼠伸出头时&#xff0c;用锤子…...

建站点的步骤/网站建设与管理

在javascript中有时会看到有两个!!的用法 var foo; alert(!foo);//undifined情况下&#xff0c;一个感叹号返回的是true; alert(!goo);//null情况下&#xff0c;一个感叹号返回的也是true; var o{flag:true}; var test!!o.flag;//等效于var testo.flag||false; alert(test…...

服装市场调网站建设的目的/网络营销网站推广方法

第一题 Q&#xff1a;在server1、server2和server3中选一个Master。 已知&#xff1a; Proposer1的编号为2&#xff1b;Proposer2的编号为1&#xff1b;Proposer3的编号为3. Proposer向Acceptor提交决议的顺序为Proposer1、Proposer3、Proposer2. 试分析&#xff1a;最终选…...

沧州英文模板建站/天津网站建设公司

//yy:那天考完概率论&#xff0c;上网无聊搜个期望可加性就搜到这题&#xff0c;看到以后特别有亲和感&#xff0c;挺有意思的。 hdu5194 DZY Loves Balls 【概率论 or 搜索】 题意&#xff1a; 一个盒子里有n个黑球和m个白球【n,m≤12】。每次随机从盒子里取走一个球&#xff…...

政府网站谁做的/网络口碑营销案例

舞动的灵魂版js日历&#xff0c;完全采用js实现&#xff0c;故而实现了与语言无关&#xff0c;jsp、asp.net php asp均可使用.无论你是开发软件&#xff0c;还是网站&#xff0c;均是不可或缺的实用代码。该日历主要实现了获取当前时间时分秒&#xff0c;年月日星期&#xff0c…...

网站建设开发/济南seo网络优化公司

磨刀系列之高频ms点 转载&#xff1a;https://mp.weixin.qq.com/s/eTtqxVUm_4wb9byaH5Corg 转载理由&#xff1a;有问有答&#xff0c;好文应当如此。...