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

news2024/11/16 9:00:58

目录

文章目录

    • 目录
    • 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;  //像素x
  uint16_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;  //像素x
	uint16_t y;  //像素y
};
struct Line
{
	uint8_t line_id;			//线段id
	bool is_able;				//使能
	vector<Point> line_info;	//线段信息,长度等于2
};
vector <Line> line; 

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

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

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

//目标闯入的标定区间struct定义
struct Point
{
	uint16_t x;  //像素x
	uint16_t y;  //像素y
};

struct Region
{
	uint8_t region_id;			//区域id
	bool is_able;				//使能
	vector<Point> region_info;	//区域信息,长度大于等于3
};
vector <Region> region;

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

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

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

//目标闯入的标定区间struct定义
struct Point
{
	uint16_t x;  //像素x
	uint16_t y;  //像素y
};

struct Region
{
	uint8_t region_id;			//区域id
	bool is_able;				//使能
	vector<Point> region_info;	//区域信息,长度大于等于3
};
vector <Region> region;

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

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

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

//目标停留的标定区间struct定义
struct Point
{
	uint16_t x;  //像素x
	uint16_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;  //像素x
	uint16_t y;  //像素y
};

struct Region
{
	uint8_t region_id;
	bool is_able;				//使能
	vector<Point> region_info; 	//长度大于等于3
	vector<Point> right_direction;//正确方向,长度等于2,两点确定方向向量,[起点, 终点]
};
vector <Region> region;

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

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

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

//目标停留的标定区间struct定义
struct Point
{
	uint16_t x;  //像素x
	uint16_t y;  //像素y
};

struct Region
{
	uint8_t region_id;			//区域id
	bool 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.coloradmin.cn/o/1935244.html

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

相关文章

GPT LangChain experimental agent - allow dangerous code

题意&#xff1a;GPT LangChain 实验性代理 - 允许危险代码 问题背景&#xff1a; Im creating a chatbot in VS Code where it will receive csv file through a prompt on Streamlit interface. However from the moment that file is loaded, it is showing a message with…

HTML+echarts.js实现的炫酷金色风格可视化组件

模板下载地址&#xff1a; 炫酷金色风格可视化组件 (bootstrapmb.com)https://www.bootstrapmb.com/item/14888 一款炫酷金色风格可视化组件&#xff0c;统计图表使用Echarts.js&#xff0c;整体风格采用金黄色看起来很大气&#xff0c;设计是通用型的&#xff0c;可以用作任…

格式工厂转换视频分辨率

1、下载和安装 http://www.pcfreetime.com/formatfactory/CN/index.html 2、打开视频 3、设置分辨率等参数 也可以选择保持原分辨率 4、执行导出 5、打开输出所在位置

【ARM】MDK-解决CMSIS_DAP.DLL missing报错

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 记录解决CMSIS_DAP.DLL missing的报错情况&#xff0c;对应相关报错信息&#xff0c;供后续客户参考&#xff0c;快速解决客户问题。 2、 问题场景 客户进行硬件调试时&#xff0c;发现Target设置内有CMSIS_DAP.DL…

[开源]语雀+Vercel:打造免费个人博客网站

大家好,我是白露。 今天我想和大家分享我的今年的第一个开源项目 —— 基于语雀+Nextjs+Vercel实现免费的博客系统。 简单来说,你在语雀写博客,然后直接一键同步到个人网站上,网站自动部署! 而且,整个过程几乎不需要额外的成本,也不用充值语雀超级会员,hh。这个项目…

电流测量分流电阻

电流测量分流电阻 测量电流的设备称为安培计。大多数现代安培计测量已知电阻的精密电阻上的电压降。电流的计算使用欧姆定律&#xff1a;我五R 大多数电流表都内置电阻器来测量电流。但是&#xff0c;当电流对于电流表来说太高时&#xff0c;需要不同的设置。解决方案是将电流…

【C++】C++旅游管理系统(源码+论文)【独一无二】

&#x1f449;博__主&#x1f448;&#xff1a;米码收割机 &#x1f449;技__能&#x1f448;&#xff1a;C/Python语言 &#x1f449;公众号&#x1f448;&#xff1a;测试开发自动化【获取源码商业合作】 &#x1f449;荣__誉&#x1f448;&#xff1a;阿里云博客专家博主、5…

ARM架构(二)—— arm v7/v8/v9寄存器介绍

1、ARM v7寄存器 1.1 通用寄存器 V7 V8开始 FIQ个IRQ优先级一样&#xff0c; 通用寄存器&#xff1a;31个 1.2 程序状态寄存器 CPSR是程序状态毒存器&#xff0c;保存条件标志位&#xff0c;中断禁止位&#xff0c;当前处理器模式等控制和状态位。每种异常模式下还存在SPSR&…

前端JS特效第46集:js-实现响应式节庆活动砸金蛋效果

js-实现响应式节庆活动砸金蛋效果&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下(全部代码在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>响应式节庆活动砸金蛋…

万界星空科技MES系统生产计划管理的功能

MES系统&#xff08;Manufacturing Execution System&#xff0c;制造执行系统&#xff09;的生产计划管理功能是其核心功能之一&#xff0c;旨在将企业的生产计划转化为实际的生产操作&#xff0c;并通过实时监控和调整来确保生产活动的顺利进行。以下是MES系统生产计划管理功…

阿里布达插画:成都亚恒丰创教育科技有限公司

阿里布达插画&#xff1a;梦幻与现实交织的绮丽画卷 在浩瀚的艺术长河中&#xff0c;总有一些作品以其独特的魅力&#xff0c;跨越时空的界限&#xff0c;触动着每一个观者的心灵。阿里布达插画&#xff0c;便是这样一股不可忽视的艺术清流&#xff0c;它以细腻的情感描绘、奇…

气膜篮球馆:理想的运动空间选择—轻空间

快速建造 气膜篮球馆的建造速度快&#xff0c;通常只需几周即可完成。这与传统建筑需要数月甚至数年的时间相比&#xff0c;显著缩短了工期。快速建造不仅能迅速投入使用&#xff0c;还减少了因工期延长而产生的额外费用。 成本效益 气膜结构相比传统建筑成本更低&#xff0c;特…

继电器模块的使用与代码示例

目录 前言 继电器简介 模块接线 工作原理 驱动代码 relay.h relay.c main.c 参考手册 继电器&#xff08;英文名称&#xff1a;relay&#xff09;是一种电控制器件&#xff0c;是当输入量&#xff08;激励量&#xff09;的变化达到规定要求时&#xff0c;在电气输出电…

Day16_集合与迭代器

Day16-集合 Day16 集合与迭代器1.1 集合的概念 集合继承图1.2 Collection接口1、添加元素2、删除元素3、查询与获取元素不过当我们实际使用都是使用的他的子类Arraylist&#xff01;&#xff01;&#xff01; 1.3 API演示1、演示添加2、演示删除3、演示查询与获取元素 2 Iterat…

排序系列 之 快速排序

&#xff01;&#xff01;&#xff01;排序仅针对于数组哦本次排序是按照升序来的哦代码后边有图解哦 介绍 快速排序英文名为Quick Sort 基本思路 快速排序采用的是分治思想&#xff0c;即在一个无序的序列中选取一个任意的基准元素base&#xff0c;利用base将待排序的序列分…

硬件开发——UART/I2C/SPI协议

硬件开发——UART/I2C/SPI协议 小狼http://blog.csdn.net/xiaolangyangyang 1、UART 电压&#xff1a; TTL电平&#xff1a;1&#xff1a;&#xff08;3.3V~5V&#xff09;&#xff0c;0&#xff1a;&#xff08;0V&#xff09;RS232电平&#xff1a;1&#xff1a;&#xff0…

idea双击没有反应,打不开

问题描述 Error opening zip file or JAR manifest missing : /home/IntelliJ-IDEA/bin/jetbrains-agent.jar解决方案

CH552的bootload程序IAP直接对ROM-flash修改数据(未尝试)

手动写bootload程序的可能 1&#xff0c;根据ch552g的使用手册内容查看到 2&#xff0c;在下面的参考文件的IAP文件夹中看到IAP文件 参考 下面程序中并没有跳转到厂家bootload的过程&#xff0c;这是直接通过控制有关的寄存器对FLSH进行直接写入和修改&#xff0c;这样可以认…

「Vue组件化」封装i18n国际化

前言 在Vue应用中实现国际化(i18n),通常需要使用一些专门的库,比如vue-i18n。本文主要介绍自定义封装i18n,支持Vue、uniapp等版本。 设计思路 一、预期效果 二、核心代码 2.1 i18n.xlsx文件准备 2.2 脚本执行 根目录main.js根目录locali18n.xlsxnode main.jsmain.js 文件…