news 2026/4/23 13:04:31

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
[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 【图片路径】即可

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

生物特征存储加密强度验证:软件测试从业者实战指南

‌1. 行业现状与测试必要性‌ 生物特征识别技术已从高端安防深入至日常消费场景&#xff0c;全球生物特征数据库年均增速高达47%&#xff08;ISO/IEC 30136:2025&#xff09;&#xff0c;这使得存储加密强度成为行业焦点。测试人员的核心任务已从功能验证升级为对抗性安全验证…

作者头像 李华
网站建设 2026/4/10 6:56:50

政府网站全系列国产浏览器适配测试:背景与现状

随着国产浏览器的快速发展&#xff08;如360安全浏览器、搜狗浏览器、UC浏览器等&#xff09;&#xff0c;其在政府网站用户中的渗透率已超过60%&#xff08;数据来源&#xff1a;2025年中国互联网报告&#xff09;。政府网站作为公共服务核心平台&#xff0c;必须确保在国产浏…

作者头像 李华
网站建设 2026/4/23 11:32:47

别等孩子说“看不清”!这些细微变化,可能是近视的早期信号!

不少家长发现孩子看电视时越坐越近&#xff0c;写作业时总爱揉眼睛。这些看似不起眼的小动作&#xff0c;其实是视力下降的早期征兆。我国儿童青少年总体近视率曾一度超过50%&#xff0c;近视防控已成为每个家庭必须面对的课题。几大细微变化&#xff0c;捕捉近视早期信号孩子视…

作者头像 李华
网站建设 2026/4/23 13:02:31

高级AI算法应用工程师职位解析与面试指南

佰聆数据股份有限公司北京分公司 高级ai算法应用工程师 职位信息 岗位职责: 1、负责AI图像目标检测相关算法的研发、优化与迭代,重点聚焦YOLO系列模型的训练、调优及工程化落地工作,提升检测精度和可靠性; 2、主导AI算法的端侧部署落地,重点完成基于RKNN框架的模型转换、量…

作者头像 李华
网站建设 2026/4/18 14:36:37

第十章 叁年04 UI同学加入

新年一开始&#xff0c;我们来了自己的UI同学&#xff0c;小婷。2025年&#xff0c;我们长期用实习生来支持UI工作。实习生的弊端是变化太快&#xff0c;缺少稳定性&#xff0c;刚熟悉了我们的工作方式&#xff0c;很快就离开了。而且现在的实习同学往往只愿意实习三个月&#…

作者头像 李华