[深度学习]基于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

【源码下载】

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

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

相关文章

【计算机网络】TCP报文详解

认识TCP报头 其实协议的形式都是一个结构化的数据&#xff0c;TCP协议也不例外。一起来看看TCP协议的报头是怎么样的。 以上就是TCP报头&#xff0c;实际上是一个结构化的数据&#xff0c;也就是一个结构体。例如&#xff1a; struct tcp_hdr {unsigned int stc_port : 16;un…

光储充一体化,开启绿色出行新篇章

一、追光逐梦&#xff0c;绿色能源点亮未来 在蔚蓝的天空下&#xff0c;光伏发电板如同一片片金色的叶子&#xff0c;静静地捕捉着太阳的光芒。它们不仅为大地带来光明&#xff0c;更是绿色出行的强大后盾。光储充一体化充电站&#xff0c;以光伏为源&#xff0c;储能为桥&…

linux 环境下动态链接库试验

1.概要 2.代码 2.1 main.c #include <stdio.h> #include "lib1.h"int main(){printf("hello word\n");int a add(2,3);printf("%d\n",a);return 0; } 2.2 lib1.c #include "lib1.h" int add(int a,int b){return ab; } 2…

Kubernetes集群部署Prometheus和Grafana

目录 一、部署Node-Exporter 二、Prometheus安装和配置 1.创建账号并予以授权 2.创建存储卷存储Prometheus配置信息 3.通过Deployment方式部署Prometheus 4.创建Service 三、Prometheus配置热加载 四、Grafana安装 五、K8s部署Kube-State-Metrics 1.创建Kube-State-M…

C#开发-集合使用和技巧(一)常用集合和方法介绍

C#开发-集合使用和技巧 &#xff08;一&#xff09;常用集合和方法介绍常用集合和方法介绍 C#开发-集合使用和技巧1. 集合基础集合介绍集合跟数组对比 2.我们常用的集合类型列表List<T>键值对集合Dictionary<TKey,TValue>队列Queue<T>其他一些集合类型堆栈St…

echarts渲染graph关系图,节点数少的情况,不显示连接边

遇到的问题 echarts渲染graph关系图&#xff0c;当节点数目很少的时候&#xff0c;节点之间的连接边不显示&#xff0c;节点们只是聚集在一起&#xff0c;节点之间有空隙&#xff0c;但是没有连线&#xff0c;我拖拽节点&#xff0c;也没有边。 解决 节点数据的id字段改为字…

架构设计 - MySQL 插入数据性能优化策略

mysql 数据库提高数据插入效率主要可以考虑以下方面&#xff1a; 使用批量插入数据的 SQL 语句&#xff0c;避免使用 for 循环逐条记录插入。 所有插入语句共用一个事务&#xff0c;避免1条SQL语句开1个事务&#xff0c;所有操作都完成后再提交事务。 尽量按照索引递增顺序插入…

Apache Doris单机快速安装(已踩坑)

官方文档&#xff1a;https://doris.incubator.apache.org/zh-CN/docs/get-starting/quick-start/ 环境&#xff1a; 操作系统&#xff1a;CentOS7.6 X86_64 JDK&#xff1a;Oracle jdk1.8.0_351 1.版本下载 从 doris.apache.org 下载相应的 Doris 安装包&#xff0c;并且解压…

Springboot防疫知识科普系统-计算机毕业设计源码03531

摘 要 如今计算机行业的发展极为快速&#xff0c;搭载于计算机软件运行的数据库管理系统在各行各业得到了广泛的运用&#xff0c;其在数据管理方面具有的准确性和高效性为大中小企业的日常运营提供了巨大的帮助。自从2020年新冠疫情爆发以来&#xff0c;防疫成了社会关注的重中…

delphi FDMemTable1.SourceView遍历各行数据,取任意行数据无需Next移动指针了。TFDDatSView

for m : 0 to FDMemTable1.SourceView.Rows.Count - 1 do begin if FDMemTable_SP.SourceView.Rows.ItemsI[m].GetData(0) varNull then Continue; end; 9行7列的值。 FDMemTable1.Data.DataView.Rows.ItemsI[9].ValueI[7]; FDMemTable1.Table.Ro…

RK3568技术笔记七 安装Ubuntu Linux

在新弹出的窗口中&#xff0c;单击“CD/DVD &#xff08;SATA&#xff09;”。如下图所示&#xff1a; 在右侧选择“使用ISO映像文件”。然后单击“浏览”&#xff0c;找到SAIL-RK3568开发板光盘->通用工具->虚拟机Ubuntu->ubuntu-18.04.4-desktop-amd64.iso。最后点击…

探索Vue.js中的文件夹上传解决方案:vue-simple-uploader

在现代Web应用开发中&#xff0c;文件上传是一个常见需求。然而&#xff0c;随着应用复杂性的增加&#xff0c;传统的文件上传方式可能无法满足所有需求&#xff0c;特别是当涉及到文件夹上传和大文件处理时。本文将介绍一个基于Vue.js的解决方案——vue-simple-uploader&#…

MySQL 保姆级教程(二):使用 MySQL 检索数据

使用 MySQL 3.2 选择数据库 使用数据库: 输入: USE 数据库名;输出: Database changed分析: 不返回任何结果&#xff0c;显示某种形式的通知 ​ 例如: 使用 crashcourse 数据库 use crashcourse; 3.3 了解数据库和表 列出所有的数据库: 输入: SHOW DATABASES;输出: --------…

MES系统助力制造业数字化转型

一、MES系统的定义和功能 MES&#xff08;Manufacturing Execution System&#xff09;即制造执行系统&#xff0c;是一种可层级化管理生产活动的软件系统。它可以实现对生产过程全面的监控、调度、控制和优化&#xff0c;提高生产的效率、质量和安全性。MES系统具有以下几个主…

五分钟教会你如何编写一个合格的测试用例

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、测试用例编写依据 测试用例编写应严格根据PRD&#xff08;产品说明书&#xff09; 没有PRD应…

最新区块链论文速读--CCF A会议 ICSE 2024 共13篇 附pdf下载 (2/2)

Conference&#xff1a;International Conference on Software Engineering (ICSE) CCF level&#xff1a;CCF A Categories&#xff1a;Software Engineering/System Software/Programming Languages Year&#xff1a;2024 Num&#xff1a;13 第1~7篇区块链文章请点击此处…

电脑技巧:认识全能绘画软件Krita

目录 一、软件简介 二、软件功能 2.1 强大的画笔引擎 2.2专业色彩管理 2.3 多层编辑与管理 2.4 动画制作 三、软件特点 四、安装说明 五、使用技巧 六、快捷键大全 对于喜欢绘画的朋友来说&#xff0c;Krita 是一款不可多得的绘画工具&#xff0c;它具有开源、免费、…

基于CNN-RNN模型的验证码图片识别

基于CNN-RNN模型的验证码图片识别是一个在计算机视觉和自然语言处理领域的经典应用场景&#xff0c;特别适合处理复杂的验证码&#xff08;如字符连成一条线的或扭曲的验证码&#xff09;和序列数据。这个任务通常包括以下几个步骤&#xff1a; 数据预处理&#xff1a; 图像增强…

Android中球体碰撞代码分享-kotlin,入门版

* 可以产生形变&#xff0c;回弹的小球 * * 整个view的核心&#xff1a; * Scroller函数 * 1.调用scroller.public void startScroll(int startX, int startY, int dx, int dy, int duration); * 在指定时间范围内&#xff0c;startX,startY,会移动dx,dy距离 * * 2.然后调用:in…

RedHat9 | Mariadb数据库的配置与管理

一、实验环境 1、Mariadb数据库介绍 MariaDB数据库管理系统是一个开源的关系型数据库管理系统&#xff0c;与MySQL高度兼容&#xff0c;并提供了更多的功能和性能优化。 起源和背景 MariaDB是MySQL的一个分支&#xff0c;主要由开源社区维护。由MySQL的创始人Michael Widen…