目标检测算法与应用算法 DS集成 接口相关_v0.1

目录

文章目录

    • 目录
    • 0. 目标GPS信息、速度、加速度、航向角信息的输出
    • 1. 目标检测算法接口
      • 1.1 模型相关
      • 1.2 检测结果相关
    • 2. 应用算法接口
      • 2.1 bool cross_line; //跨线(变道压线检测)
      • 2.2 bool break_in; //闯入(目标闯入)
      • 2.3 bool stay; //停留(目标违停)
      • 2.4 bool left_behind; //遗留物(道路遗留、抛散、异常)
      • 2.5 bool retrograde; //逆行(目标逆行)
      • 2.6 目标占道(占用公交车道、应急车道... ...)
      • 2.7 流量统计
    • 2.8 车辆行驶车道
    • 2.9 车身颜色识别
    • 2.10 车牌识别
    • 3 道路信息

0. 目标GPS信息、速度、加速度、航向角信息的输出

接口示例:

// 道路信息配置(GPS信息配置)
struct GPSPosition
{double longitude; //经度double latitude;  //纬度float altitude;  //高度
};struct Point
{uint16_t x;  //像素xuint16_t y;  //像素y
};struct Row
{std::vector<GPSPosition> gps;	//多个点位经纬度信息std::vector<Point> pos;	// 多个点位像素位置
};
std::vector<Row> rows;

为vector rows赋值示例:

// 长度为3认为标定了3行信息
vector<Row> rows(3); 
int len_rows = rows.size();  // 3
// 第一行信息认为三个点赋值 
rows[0].gps[0].longitude = 100.0281330;
rows[0].gps[0].latitude = 100.5329955;
rows[0].gps[0].altitude = 886.4188;
rows[0].pos[0].x = 0;
rows[0].pos[0].y = 0;
rows[0].gps[1].longitude = 150.0281382;
rows[0].gps[1].latitude = 100.5329584;
rows[0].gps[1].altitude = 886.3948;
rows[0].pos[1].x = 50;
rows[0].pos[1].y = 0;
rows[0].gps[2].longitude = 200.0281402;
rows[0].gps[2].latitude = 100.5329200;
rows[0].gps[2].altitude = 886.3948;
rows[0].pos[2].x = 100;
rows[0].pos[2].y = 0;
// 第二行信息认为两个点赋值
rows[1].gps[0].longitude = 100.0281330;
rows[1].gps[0].latitude = 150.5328777;
rows[1].gps[0].altitude = 883.0678;
rows[1].pos[0].x = 0;
rows[1].pos[0].y =45;
rows[1].gps[1].longitude = 100.0276137;
rows[1].gps[1].latitude = 153.5328084;
rows[1].gps[1].altitude = 883.3948;
rows[1].pos[1].x = 100;
rows[1].pos[1].y = 50;
// 第三行信息认为三个点赋值
rows[2].gps[0].longitude = 100.0281330;
rows[2].gps[0].latitude = 203.5327223;
rows[2].gps[0].altitude = 878.6568;
rows[2].pos[0].x = 0;
rows[2].pos[0].y = 100;
rows[2].gps[1].longitude = 150.0281382;
rows[2].gps[1].latitude = 203.5326848;
rows[2].gps[1].altitude = 878.8278;
rows[2].pos[1].x = 50;
rows[2].pos[1].y = 100;
rows[2].gps[2].longitude = 200.0281402;
rows[2].gps[2].latitude = 200.5326465;
rows[2].gps[2].altitude = 878.9038;
rows[2].pos[2].x = 100;
rows[2].pos[2].y = 100;

1. 目标检测算法接口

1.1 模型相关

​ 模型相关文件及其对应的目标类型。

如下文件:

best.wts
best.cfg
best.engine
labels.txt

其中,labels.txt内容对应模型文件的分类类型,示例如下:

car
truck
bus
elec
bike
pedes
tricycle
coni
warm

1.2 检测结果相关

【注】:跟模型文件一起写死在算法内部。

检测结果涉及目标输出信息和目标所属类别置信度信息。

//目标分类数
static constexpr int CLASS_NUM = 9;//输入图像宽高
static constexpr int INPUT_H = 960;  
static constexpr int INPUT_W = 960;//目标框
struct Box {uint16_t x;uint16_t y;uint16_t w;uint16_t h;};//目标置信度
pre-cluster-threshold=0.25// 
//nms-iou-threshold=0.45

2. 应用算法接口

2.0 每帧图像的目标信息如下:

vector<TargetAttribute>;

2.1 bool cross_line; //跨线(变道压线检测)

输入:每帧的目标信息 和 如下结构体的标定信息

// 跨线检测对应标定线结构体定义,可能需要考虑线段id,涉及多条线段需要跨线检测的时候
struct Point
{uint16_t x;  //像素xuint16_t y;  //像素y
};
struct Line
{uint8_t line_id;			//线段idbool is_able;				//使能vector<Point> line_info;	//线段信息,长度等于2
};
vector <Line> line; 

输出:当前帧图像的目标信息。增加了对应目标信息的TriggerEvent事件结果。

2.2 bool break_in; //闯入(目标闯入)

输入:每帧的目标信息 和 如下结构体的标定信息

//目标闯入的标定区间struct定义
struct Point
{uint16_t x;  //像素xuint16_t y;  //像素y
};struct Region
{uint8_t region_id;			//区域idbool is_able;				//使能vector<Point> region_info;	//区域信息,长度大于等于3
};
vector <Region> region;

输出:当前帧图像的目标信息。增加了对应目标信息的事件结果。

2.3 bool stay; //停留(目标违停)

输入:每帧的目标信息 和 如下结构体的标定信息

//目标闯入的标定区间struct定义
struct Point
{uint16_t x;  //像素xuint16_t y;  //像素y
};struct Region
{uint8_t region_id;			//区域idbool is_able;				//使能vector<Point> region_info;	//区域信息,长度大于等于3
};
vector <Region> region;

输出:当前帧图像的目标信息。增加了对应目标信息的事件结果。

2.4 bool left_behind; //遗留物(道路遗留、抛散、异常)

输入:每帧的目标信息 和 如下结构体的标定信息

//目标停留的标定区间struct定义
struct Point
{uint16_t x;  //像素xuint16_t y;  //像素y
};struct Region
{uint8_t region_id;bool is_able;				//使能vector<Point> region_info; //长度大于等于3
};
vector <Region> region;

输出:当前帧图像的目标信息。增加了对应目标信息的事件结果。

2.5 bool retrograde; //逆行(目标逆行)

输入:每帧的目标信息 和 如下结构体的标定信息

//目标停留的标定区间struct定义
struct Point
{uint16_t x;  //像素xuint16_t y;  //像素y
};struct Region
{uint8_t region_id;bool is_able;				//使能vector<Point> region_info; 	//长度大于等于3vector<Point> right_direction;//正确方向,长度等于2,两点确定方向向量,[起点, 终点]
};
vector <Region> region;

输出:当前帧图像的目标信息。增加了对应目标信息的事件结果。

2.6 目标占道(占用公交车道、应急车道… …)

输入:每帧的目标信息 和 如下结构体的标定信息

//目标停留的标定区间struct定义
struct Point
{uint16_t x;  //像素xuint16_t y;  //像素y
};struct Region
{uint8_t region_id;			//区域idbool is_able;				//使能vector<Point> region_info; 	//长度大于等于3
};
vector <Region> region;

输出:当前帧图像的目标信息。增加了对应目标信息的事件结果。

2.7 流量统计

参见 2.1 跨线检测 。

2.8 车辆行驶车道

依赖车道识别算法 或 标定车道信息

2.9 车身颜色识别

输入: 一帧图像的Mat信息 和 每帧的目标信息

// 一帧图像的信息,类型为Mat
Mat frames;// 每帧的目标信息,如下:
vector<TargetAttribute> objs;

输出:当前帧图像的目标信息。增加了对应目标信息的事件结果。

2.10 车牌识别

3 道路信息

3.1 车道占用率

3.2 车道空间占用率

3.3 车道车辆数

3.4 是否拥堵

3.5 车道排队车辆数

3.6 车辆排队长度

3.7 队首队尾车辆位置

3.8 车头间距

3.9 车头时距

3.10 车流平均速度

3.11 车辆缓行

3.12 超高速

3.13 超低速

3.14

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47743.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux HOOK机制与Netfilter HOOK

一. 什么是HOOK&#xff08;钩子&#xff09; 在计算机中&#xff0c;基本所有的软件程序都可以通过hook方式进行行为拦截&#xff0c;hook方式就是改变原始的执行流。 二. Linux常见的HOOK方式 1、修改函数指针。 2、用户态动态库拦截。 ①利用环境变量LD_PRELOAD和预装载机…

【Python】python中list的迭代

什么是迭代&#xff1a; 迭代其实就是遍历整个数据结构 nums [3,4,5] for n in nums:print(n)上述代码中&#xff0c;我们定义了一个nums列表&#xff0c;并且使用for循环对其进行遍历。其实整个过程就是迭代&#xff0c;所谓迭代&#xff0c;就是对数据集中每一个元素对其进…

STM32自己从零开始实操:PCB全过程

一、PCB总体分布 以下只能让大家看到各个模块大致分布在板子的哪一块&#xff0c;只能说每个人画都有自己的理由&#xff1a; 电源&#xff1a;从外部接入电源&#xff0c;5V接到中间&#xff0c;向上变成4V供给无线&#xff0c;向下变成3V供给下面的接口&#xff08;也刻意放…

无极与有极电容的区别

无极性电容与有极性电容&#xff1a;差异与应用探索 在电子元件的广阔世界里&#xff0c;电容器无疑是不可或缺的一部分。它们以储存电荷和调节电路中的电压与电流而闻名。然而&#xff0c;电容器并非一概而论&#xff0c;其中最为显著的区别之一就是无极性电容与有极性电容。…

Springboot中常见的注解及其底层实现?

Spring Boot 是一个用于简化 Spring 应用初始搭建以及开发过程的框架&#xff0c;它大量使用了注解来简化配置和提高开发效率。以下是一些常见的 Spring Boot 注解及其底层实现&#xff1a; ### 1. SpringBootApplication 这是一个复合注解&#xff0c;包含了 Configuration、…

DP讨论——访问者模式

学而时习之&#xff0c;温故而知新。 访问者模式 角色 3个角色&#xff0c;访问者类&#xff0c;被访问者类&#xff0c;管理被访问者类的类。 特色 所谓访问者模式&#xff0c;我感觉就是被访问的类的方法形参是别的对象引用&#xff0c;然后临时过来进入一下&#xff0c…

每日一练 - BGP 路由表中的团体属性

01 真题题目 下面一台路由器的输出信息&#xff0c;关于这段信息描述正确的是? A.目的网段 1.1.1.0/24 所携带的团体属性值是 NO-EXPORT&#xff0c; 表明该路由条目不能通告给任何 BGP 邻居 B.目的网段 1.1.1.0/24 所携带的图体属性值是 NO-EXPORT&#xff0c; 表明试路由…

Python面试整理-Python中的变量和赋值:理解变量的命名规则、赋值方式以及变量类型

在Python中,变量用于存储数据。以下是关于变量的命名规则、赋值方式和变量类型的详细说明: 变量的命名规则 1. 字母、数字和下划线: ● 变量名必须以字母(a-z,A-Z)或下划线(_)开头,后续字符可以是字母、数字(0-9)或下划线。 ● 例如:my_var, _var2, var3 2.

Three.JS 使用RGBELoader和CubeTextureLoader 添加环境贴图

导入RGBELoader模块&#xff1a; import { RGBELoader } from "three/examples/jsm/loaders/RGBELoader.js"; 使用 addRGBEMappingk(environment, background,url) {rgbeLoader new RGBELoader();rgbeLoader.loadAsync(url).then((texture) > {//贴图模式 经纬…

三个国产数据库调研(达梦,PolarDB,TDSQL

三个国产数据库调研&#xff1a;达梦&#xff0c;PolarDB&#xff0c;TDSQL 1. 整体描述2. 达梦数据库2.1 相关网站2.2 接入工作2.3 工具使用2.4 总结 3. PolarDB数据库3.1 相关网站3.2 产品对比3.3 接入工作 4. TDSQL数据库4.1 相关网站4.2 产品对比4.3 接入工作 5. 对比总结5…

git使用-命令行+VS Code结合使用

一、Git常用命令 // 显示当分支的状态。它会列出已修改、已暂存和未跟踪的文件 git status// 列出本地仓库中所有的分支&#xff0c;其中会特殊显示当前所在分支 git branch// 在当前分支的基础上创建一个新的分支&#xff0c;并切换到这个新的分支上 git checkout -b 新分支…

问题:向上对齐对象的快捷键是: #学习方法#笔记

问题&#xff1a;向上对齐对象的快捷键是: A、T B、L C、R D、W 参考答案如图所示

做一只勤劳的小蜜蜂

机缘 成为创作者的初心&#xff0c;对我而言&#xff0c;是一个融合了个人兴趣、职业成长以及对知识传播热爱的复杂而纯粹的情感交织。回顾这段旅程的起点&#xff0c;几个核心驱动力始终引领着我前行&#xff1a; 1、记录与反思&#xff1a;在职业生涯的早期&#xff0c;我遇…

WordPress与 wp-cron.php

WordPress 傲居全球最流行的内容管理系统&#xff08;CMS&#xff09;之位&#xff0c;占据了互联网约43%的网站后台&#xff0c;这主要得益于其直观易用的用户界面以及丰富的扩展功能&#xff0c;特别是为新手用户提供了极大的便利。 然而&#xff0c;在畅享WordPress带来的便…

Leetcode 1302.层数最深子叶结点的和

大家好&#xff0c;今天我给大家分享一下我关于这个题的想法&#xff0c;我这个题过程比较复杂&#xff0c;但大家如果觉得好的话&#xff0c;就请给个免费的赞吧&#xff0c;谢谢了^ _ ^ 1.题目要求: 给你一棵二叉树的根节点 root &#xff0c;请你返回 层数最深的叶子节点的…

Go语言并发编程-Context上下文

Context上下文 Context概述 Go 1.7 标准库引入 context&#xff0c;译作“上下文”&#xff0c;准确说它是 goroutine 的上下文&#xff0c;包含 goroutine 的运行状态、环境、现场等信息。 context 主要用来在 goroutine 之间传递上下文信息&#xff0c;包括&#xff1a;取…

准备跳槽了(仍然底层为主,ue独立游戏为辅)

思考再三&#xff0c;准备跳槽了。 一、跳槽原因&#xff1a; 今年经济形势非常不好。那我为什么还要跳槽呢&#xff1f;因为干不下去了。公司是末位淘汰制&#xff0c;而我绩效垫底了。给我的整改措施中&#xff0c;部门经理让我三个月搞定60个bug&#xff0c;我觉得简直是送…

python爬虫实现简单的代理ip池

python爬虫实现简单的代理ip池 我们在普通的爬虫过程中经常遇到一些网站对ip进行封锁的 下面演示一下普通的爬虫程序 使用requests.get爬取数据 这段代码是爬取豆瓣排行榜的数据&#xff0c;使用f12来查看请求的url和数据格式 代码 def requestData():# 爬取数据的urlur…

数学基础【俗说矩阵】:矩阵相乘

矩阵乘法 矩阵乘法推导过程 一、两个线性方程复合代入 二、X1和X2合并同类项 三、复合后方程组结果 四、线性方程组矩阵表示 五、线性方程组矩阵映射表示 复合映射表示 六、矩阵乘法导出 矩阵乘法法则 1、规则一推导过程 左取行&#xff0c;右取列&#xff0c;对应相乘后…

java中double类型1+1.82保留的很多小数如何处理

问题描述&#xff1a; Java处理Double类型数据相加时&#xff0c;出现11.822.8200000000000003并存入数据库的情况 问题原因&#xff1a; 在计算机中&#xff0c;浮点数&#xff08;如1.82&#xff09;通常用二进制形式表示&#xff0c;而这种表示方式可能会导致精度丢失&…