news 2026/9/7 23:35:24

[C++][cmake]基于C++在windows上部署yolo26的目标检测onnx模型

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[C++][cmake]基于C++在windows上部署yolo26的目标检测onnx模型

yolo26已经正式发布了,第一时间手搓C++代码实现YOLO26部署,首先看yolov11网络结构,发现输出shape是1x84x8400

再看看YOLO26网络结构:

可见yolo11和yolo26输出是不一样的是不能共用代码。

模型使用官方yolo26n.pt转换成的onnx,转换命令
yolo export model=yolo26n.pt format=onnx opset=12
如果你是自己训练的模型可以替换即可,但是需要yolo26框架才行
测试环境:
windows10 x64

vs2019

cmake==3.30.1

onnxruntime-gpu==1.20.1

opencv==4.12.0

使用步骤:

首先cmake生成exe文件,然后将onnxruntime.dll和onnxruntime_providers_shared.dll放到exe一起,不然会提示报错0x0000007b,这是因为系统目录也有个onnxruntime.dll引发冲突,并把car.mp4也放到exe一起。运行直接输入 yolo26.exe C:\Users\Administrator\Desktop\yolo26-onnx-cplus\models\yolo26n.onnx 注意onnx路径要是你真实路径我的onnx路径是我桌面上地址

调用代码:

#include "YOlo26Manager.h" #include <iostream> #include <opencv2/opencv.hpp> void demo_image() { std::string model_path = "yolo26.onnx"; Yolo26Manager detector(model_path); cv::Mat image = cv::imread("car.jpg"); std::vector<Detection> detections = detector.Inference(image); cv::Mat resultImg = detector.DrawImage(image, detections); cv::imshow("yolo26", resultImg); cv::waitKey(0); } // int main(int argc, char const *argv[]) // { // demo_image(); // return 0; // } int main(int argc, char const *argv[]) { std::string model_path = argv[1]; cv::namedWindow("yolo26", cv::WINDOW_AUTOSIZE); Yolo26Manager detector(model_path,false); 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("yolo26", resultImg); if (cv::waitKey(5) >= 0) break; } return 0; }

最后测试效果:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/2 11:08:17

rpmbuild命令详解

1. 基本介绍rpmbuild是用于构建RPM软件包的命令行工具&#xff0c;它根据spec文件中的指令编译源代码并打包成可安装的RPM文件。2. RPM构建目录结构默认的RPM构建目录位于~/rpmbuild/&#xff1a;~/rpmbuild/ ├── BUILD # 编译时临时目录 ├── BUILDROOT # 虚拟安装…

作者头像 李华
网站建设 2026/9/5 8:42:28

【开题答辩全过程】以 基于微信小程序的华郅考勤管理系统为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人&#xff0c;语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

作者头像 李华
网站建设 2026/9/7 17:47:11

微软VC运行库合集完整版下载-微软VC运行库合集完整版最新版下载

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

作者头像 李华
网站建设 2026/9/3 0:04:47

VP引导定位软件-目标(基准)位置确定

VP引导定位软件-目标&#xff08;基准&#xff09;位置确定 UIlb_TargetX lb_TargetY lb_TargetAlb_OffsetX lb_OffsetY lb_OffsetAlb_CurrentX lb_CurrentY lb_CurrentATargetLocation/// <summary>/// 目标位置/// </summary>public class TargetLocation{/// &l…

作者头像 李华
网站建设 2026/9/6 15:40:25

销冠都在用的客户沟通模板:从询盘到成交,轻松应对各种场景

在外贸行业中&#xff0c;沟通能力直接决定了订单的成败。销冠之所以是销冠&#xff0c;不仅在于他们对产品的了解&#xff0c;更在于他们掌握了高效、专业的沟通节奏与话术&#xff0c;能在不同场景下推动客户关系向前发展。本文为你整理了一系列实战中高频出现的关键场景沟通…

作者头像 李华