首页 > 编程语言 >opencv yolo11 onnx c++代码

opencv yolo11 onnx c++代码

时间:2024-10-17 10:00:20浏览次数:6  
标签:yolo11 int outputs float c++ opencv factor data class

1.export onnx, opset我设置的是12,其它值或许也可以

2.opencv使用的4.10【其他版本或许也可以,4.7.0版本是不行的】

3.代码核心参考yolo之前版本的实现即可。

 

model.setInput(blob);
model.forward(outputs, outnames);

const int dimensions = 84;
const int rows = 8400;
float x_factor = input_image.cols / INPUT_WIDTH;
float y_factor = input_image.rows / INPUT_HEIGHT;

outputs[0] = outputs[0].reshape(1, dimensions);
cv::transpose(outputs[0], outputs[0]);//转置

float* data = (float*)outputs[0].data;

 

std::vector<int> class_ids;
std::vector<float> confidences;
std::vector<cv::Rect> boxes;

for (int i = 0; i < rows; ++i) {

if (1) {

float* classes_scores = data + 4;
cv::Mat scores(1, dimensions - 4, CV_32FC1, classes_scores);
cv::Point class_id;
double max_class_score;
minMaxLoc(scores, 0, &max_class_score, 0, &class_id);
if (max_class_score > SCORE_THRESHOLD) {

confidences.push_back(max_class_score);

class_ids.push_back(class_id.x);

float x = data[0];
float y = data[1];
float w = data[2];
float h = data[3];
int left = int((x - 0.5 * w) * x_factor);
int top = int((y - 0.5 * h) * y_factor);
int width = int(w * x_factor);
int height = int(h * y_factor);
boxes.push_back(cv::Rect(left, top, width, height));
}

}

data += dimensions;

}

标签:yolo11,int,outputs,float,c++,opencv,factor,data,class
From: https://www.cnblogs.com/pclx/p/18471459

相关文章

  • OpenCV基本操作(python开发)——(1) 读取图像、保存图像
    OpenCV一.OpenCV安装——linux执行以下命令安装opencv-python库(核心库)和opencv-contrib-python库(贡献库)。注意:命令拷贝后要合成一行执行,中间不要换行。#安装opencv核心库pip3install--useropencv-python==3.4.2.16--index-urlhttps://pypi.tuna.tsinghua.edu.cn......
  • YOLO11涨点优化:原创自研 | 自研独家创新BSAM注意力 ,基于CBAM升级
     ......
  • C++智能指针
    智能指针1、智能指针本身:智能指针是一个类模板的实例,通常作为局部变量存在于栈区(Stack)。当函数返回或者局部变量超出其作用域时,栈区的内存会被自动释放。2、智能指针管理的对象:智能指针通常用来管理在堆区(Heap)上分配的内存。这是通过调用如new操作符来完成的。堆区的内存会一直......
  • C++算法练习-day1——704.二分查找
    题目来源:.-力扣(LeetCode)题目思路分析二分查找是一种在有序数组中查找某一特定元素的搜索算法。搜索过程从数组的中间元素开始,如果中间元素正好是要查找的元素,则搜索过程结束;如果某一特定元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半中查找,而且跟开始一样从......
  • C++ [NOIP1999 提高组] 邮票面值设计 详解
    C++[NOIP1999提高组]邮票面值设计详解题目背景题目描述输入格式输出格式样例#1样例输入#1样例输出#1完整代码(你们最想要的):[NOIP1999提高组]邮票面值设计题目背景除直接打表外,本题不保证存在正确且时间复杂度可以通过全部数据做法。由于测试数据过水,部......
  • C++基础语法---类和对象
    目录1、概念1.1对象:1.2类型:2、抽象3、封装4、对象的产生5、对象的大小6、 操作对象7、数据的保护和共享8、C++内置字符串操作类例:分文件形式---时钟类代码实现:总结:1、概念1.1对象:现实世界中一切客观存在的事物,统称为对象。对象是有形的,例如一杯水,一台......
  • YOLO11有效改进专栏目录
    |试读篇|使用YOLO11训练自己的数据集【下载模型】-【导入数据集】-【训练模型】-【评估模型】-【导出模型】YOLO11关键改进与网络结构图YOLO11改进|注意力机制篇|添加GAM、CBAM、CA、ECA等注意力机制YOLO11改进|卷积篇|引入可变核卷积AKConv|注意力机制篇|YOLO11改进|注意......
  • 链表C++
    #include<iostream>#include<stdexcept>usingnamespacestd;#defineeleTypeintstructListNode{ eleTypem_data; ListNode*next; ListNode(eleTypedata) { m_data=data; next=NULL; }};classLinkedlist{private: ListNode*head; ......
  • C++:Boost的安装和使用
    1、Boost简介Boost的本质就是一个开源C++库,它包含多种功能强大的模块,如:字符串文本处理模块、容器、算法、多线程、智能指针、线程池等模块2、Boost的下载和安装(1)Boost下载官网:http://www.boost.org/SourceForge:C++BoostLibrary在国内能够实现更快速的下载window系......
  • 链队(c++)
    //队列的顺序实现//线性表先进先出#include<iostream>usingnamespacestd;#defineMaxSize100typedefstructLinkNode{chardata;structLinkNode*next;}LinkNode,*QueuePtr;typedefstruct{  QueuePtrfront,rear;}LinkQueue;//初始化voidInitQueue(L......