news 2026/6/15 18:08:33

[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/6/10 23:30:18

3.5um的彩色图像传感器和3.5um的黑白图像传感器图像成像质量对比

一、同等尺寸的黑白和彩色sensor对比 1.分辨率 2.感光度和信噪比 3.色彩准确度 4.应用匹配二、有效的分辨率 1.黑白传感器的每个像素提供完整的灰度信息&#xff0c;而彩色传感器 的每个像素只能是一个颜色&#xff0c;需要使用插值算法来猜出来另外 丢失的两种颜色三、感光度和…

作者头像 李华
网站建设 2026/6/15 14:15:17

Unsloth多卡训练实战:分布式微调配置参数详解

Unsloth多卡训练实战&#xff1a;分布式微调配置参数详解 1. Unsloth 简介 Unsloth 是一个开源的大型语言模型&#xff08;LLM&#xff09;微调与强化学习框架&#xff0c;致力于让人工智能技术更加高效、准确且易于获取。通过深度优化底层计算逻辑和显存管理机制&#xff0c…

作者头像 李华
网站建设 2026/6/15 11:42:08

孩子近视度数涨的越来越快,可能跟你的错误认知有关

不少家长发现&#xff0c;孩子的近视度数增长速度远超预期&#xff0c;往往半年复查就需要更换更高度数的镜片。面对这一问题&#xff0c;多数家长将原因归结为电子产品使用过多、课业压力大等外部因素&#xff0c;却忽略了自身存在的认知偏差。这些被忽视的错误认知&#xff0…

作者头像 李华
网站建设 2026/6/15 12:46:15

冬季孩子近视度数“刹不住车”?这几个原因家长必须警惕!

冬季来临&#xff0c;不少家长发现孩子的近视度数又出现了明显增长&#xff0c;明明之前已经做好了日常防控&#xff0c;却还是挡不住度数“飙升”的趋势。儿童青少年近视防控是一项长期且细致的工作&#xff0c;冬季之所以成为近视度数增长的高发期&#xff0c;与环境变化、生…

作者头像 李华
网站建设 2026/6/13 11:59:27

吴恩达开新课教OCR!用Agent搞定文档提取

随着AI大模型研发在架构、记忆、存储等等领域的深水区创新&#xff0c;OCR重新成为了技术专项。DeepSeek在研究、智谱在研究、阿里千问和腾讯混元也都在研究……你懂OCR吗&#xff1f;2025年之前&#xff0c;可能人人都懂。但2025年之后&#xff0c;你还认为你真的懂OCR吗&…

作者头像 李华
网站建设 2026/6/15 12:46:06

导师推荐10个AI论文写作软件,自考毕业论文轻松搞定!

导师推荐10个AI论文写作软件&#xff0c;自考毕业论文轻松搞定&#xff01; 自考论文写作新选择&#xff0c;AI工具让难题迎刃而解 在自考论文写作的过程中&#xff0c;许多学生常常面临时间紧张、思路混乱、格式不规范等难题。尤其是在当前AIGC技术广泛应用的背景下&#xff0…

作者头像 李华