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

[C++][cmake]基于C++在windows上onnxruntime+opencv部署yolo26的图像分类onnx模型

如果只需要opencv去部署yolov11分类模型可以参考我其他博文,本文和 opencv去部署yolov11分类模型区别是:opencv部署推理核心使用opencv自带api,而本文推理核心用的onnxruntime,opencv只是辅助作用即读取处理图片

【算法介绍】

ONNX Runtime是微软推出的一款高性能的机器学习推理引擎框架,专注于加速机器学习模型的预测阶段。它支持多种运行后端,包括CPU、GPU等,使得开发者可以灵活选择最适合其应用场景的硬件平台。使用C++和ONNX Runtime部署YOLOv11-CLS图像分类ONNX模型,涉及到以下几个关键步骤:

  1. 环境配置:首先,需要安装ONNX Runtime库,可以通过从ONNX Runtime的GitHub存储库中下载预编译的二进制文件来安装,或者通过源代码进行构建。同时,还需要安装OpenCV等图像处理库,以便对输入图像进行预处理。
  2. 模型加载:加载YOLOv11-CLS的ONNX模型文件,通常涉及到指定模型的路径,并创建一个InferenceSession对象,该对象将用于后续的推理。
  3. 数据预处理:使用OpenCV等库对输入图像进行预处理,包括调整图像大小、归一化像素值等,以满足模型输入的要求。
  4. 模型推理:将预处理后的数据传递给InferenceSession对象,并调用其Run方法来执行推理。这将返回模型的输出,通常是一个包含分类结果的张量。
  5. 结果处理:解析模型的输出,提取有用的信息(如分类标签和置信度),并根据需要进行进一步的处理或可视化。

通过以上步骤,可以在C++中使用ONNX Runtime成功部署YOLO26CLS图像分类模型,实现高效的图像分类任务。

【效果展示】

【调用代码】

#pragma once #include <iostream> #include <opencv2/core.hpp> #include <fstream> #include "inference.h" #include <chrono> using namespace std; int main(int argc, char *argv[]) { if (argc == 1) { std::cout << "Usage: main.exe <image_path>" << std::endl; return 0; } DL_INIT_PARAM params; params.labelPath = "class_names.txt"; params.modelPath = "yolo26n-cls.onnx"; params.modelType = YOLO_CLS_26; params.imgSize = {224, 224}; params.rectConfidenceThreshold = 0.4; params.iouThreshold = 0.0001; params.cudaEnable = false; auto starttime_1 = std::chrono::high_resolution_clock::now(); std::unique_ptr<YOLO_26> yolo(new YOLO_26); yolo->CreateSession(params); auto starttime_3 = std::chrono::high_resolution_clock::now(); auto duration_ms4 = std::chrono::duration_cast<std::chrono::milliseconds>(starttime_3 - starttime_1).count(); std::cout << "[YOLO_26]: warm up: " << duration_ms4 << "ms" << std::endl; std::string imagepath = argv[1]; cv::Mat image = cv::imread(imagepath); auto starttime_2 = std::chrono::high_resolution_clock::now(); auto results = yolo->Inference(image); auto starttime_4 = std::chrono::high_resolution_clock::now(); auto duration_ms3 = std::chrono::duration_cast<std::chrono::milliseconds>(starttime_4 - starttime_2).count(); std::cout << "[YOLO_26]: inference time: " << duration_ms3 << " ms" << std::endl; for (const auto &result : results) { std::cout << "[YOLO_26]: label is: " << result.className << ", confidence is: " << result.confidence << std::endl; std::string text = result.className + " " + std::to_string(result.confidence).substr(0, 4); cv::putText(image, text, cv::Point(10, 30), cv::FONT_HERSHEY_SIMPLEX, 1, cv::Scalar(0, 255, 0), 2); } return 0; }

【测试环境】

vs2019

cmake==3.30.1

opencv==4.8.0

onnxruntime==1.16.3

【运行步骤】

通过cmake编译出exe后,执行

yolo26-cls.exe 【图片路径】即可

http://www.jsqmd.com/news/257691/

相关文章:

  • 吐血推荐10个AI论文写作软件,本科生毕业论文轻松搞定!
  • 如何选择产品设计合作伙伴?2026年最新深度评测与综合排名推荐 - 十大品牌推荐
  • 面向边缘设备的YOLOv12模型轻量化:剪枝与知识蒸馏联合优化方法
  • 收集自己的每日消费金额,统计每周消费峰值,输出消费高峰日,并给出省钱建议。
  • YOLOv13 增强指南:集成空间注意力(SAB)的RAB卷积模块实现与性能验证
  • 基于SpringBoot+Vue的电商应用系统(11718)
  • 攻克海思芯片部署难点:YOLOv8模型RPN硬化与INT8量化的精度保持方案
  • 直播电商监督管理办法
  • 基于SpringBoot的失物招领平台的设计与实现(11719)
  • SpringBoot集成Hera,分布式应用监控与追踪解决方案
  • 网络暴力信息治理规定
  • 亲测好用!专科生毕业论文必备9大AI论文网站测评
  • 2026年外观设计公司推荐:2026年度横向对比评测与用户评价排名报告 - 十大品牌推荐
  • 低代码高频实践场景系列之五——跨境零售PLM系统 - 实践
  • 网络和安全防护建设方案(Word)
  • 2026年外观设计公司推荐:五大机构深度评测及长期合作评价排名指南 - 十大品牌推荐
  • 3.5um的彩色图像传感器和3.5um的黑白图像传感器图像成像质量对比
  • 分析镁质风管定制厂家,哪家性价比高 - 工业品牌热点
  • 跨品牌工业设备协议兼容性验收方法论‌——面向测试工程师的实战指南
  • 政府网站全系列国产浏览器适配测试:背景与现状
  • HY-MT1.5-1.8B技术解析:上下文感知实现机制
  • 2026年市场知名的玻璃钢冷却塔实力厂家排名,玻璃钢冷却塔/闭式冷却塔/冷却水塔/冷却塔,玻璃钢冷却塔厂商排行榜 - 品牌推荐师
  • Unsloth多卡训练实战:分布式微调配置参数详解
  • 第三方支付接口防重放攻击验收实践指南
  • 生物特征存储加密强度验证:软件测试从业者实战指南
  • 权限越权操作阻断机制测试:软件测试从业者的全面指南
  • CosyVoice-300M Lite极速部署:适用于50GB磁盘环境
  • 2026年伸缩悬臂货架优选,口碑厂家值得选,抽屉式板材货架/横梁式货架/钢管存放架,伸缩悬臂货架批发厂家哪家强 - 品牌推荐师
  • OpenHarmony下Electron+Flutter应用自动化测试框架构建全流程指南 - 教程
  • 全网最全10个AI论文网站,专科生轻松搞定毕业论文!