
如果只需要opencv去部署yolov11分类模型可以参考博文:https://blog.csdn.net/FL1623863129/article/details/142734819?spm=1001.2014.3001.5501
本文和 opencv去部署yolov11分类模型区别是:opencv部署推理核心使用opencv自带api,而本文推理核心用的onnxruntime,opencv只是辅助作用即读取图片
【算法介绍】
ONNX Runtime是微软推出的一款高性能的机器学习推理引擎框架,专注于加速机器学习模型的预测阶段。它支持多种运行后端,包括CPU、GPU等,使得开发者可以灵活选择最适合其应用场景的硬件平台。使用C++和ONNX Runtime部署YOLOv11-CLS图像分类ONNX模型,涉及到以下几个关键步骤:
通过以上步骤,可以在C++中使用ONNX Runtime成功部署YOLOv11-CLS图像分类模型,实现高效的图像分类任务。
【效果展示】

【实现部分代码】
#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 = "yolo11n-cls.onnx";
params.modelType = YOLO_CLS_V11;
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_V11> yolo(new YOLO_V11);
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_V11]: 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_V11]: inference time: " << duration_ms3 << " ms" << std::endl;
for (const auto &result : results)
{
std::cout << "[YOLO_V11]: 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.24.3
opencv==4.8.0
onnxruntime==1.16.3
【运行步骤】
通过cmake编译出exe后,执行
yolov11-cls.exe 【图片路径】即可
【完整源码下载】