Files
CodeRepository/Projects/App_S3313/Src/gdParty/include/STD_ArithStandardDll.h

466 lines
14 KiB
C
Raw Normal View History

2026-02-01 22:23:06 +08:00
#pragma once
/*********版权所有(C)2024, 武汉高德红外股份有限公司***************
* ArithStandardDll.h
* SDK
*
* (Arith DLL)"ARIDLL"
* V2.0
* 04046wcw
* 2023-11-01
****************************************************************/
#ifndef __STD_ARTTHSTANDARDDLL_H__
#define __STD_ARTTHSTANDARDDLL_H__
#include "Arith_CommonDef.h"
//#include "Arith_MOT_PipeProc.h"
#ifdef _WIN32
#define STD_TRACKER_API extern "C" __declspec(dllexport)
#else
#define STD_TRACKER_API __attribute__ ((visibility("default")))
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef void* ArithHandle; // 算法句柄
#ifndef _ARIDLL_OBJINFO_
#define _ARIDLL_OBJINFO_
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//单个目标的结构体[兼容输入/输出,检测/跟踪]
typedef struct tagARIDLL_OBJINFO
{
//*****1.目标状态信息*****
int nFrameId; //目标当前信息所对应的帧编号
unsigned char unObjStatus; //目标搜索状态信息,更新/新增/删除
unsigned char bMainTracked; //目标是否为主跟踪目标
TrackingStatus unTrackingStatus;//目标跟踪状态
//*****2.目标管道信息*****
int nOutputID; //输出告警目标
int nInPipesID; //目标在管道数组中的编号
int nPipeLostCnt; //目标当前管道连续丢失计数
int nTotalCnt; // 目标当前管道总帧数
unsigned char bInCurrFov; //目标是否在当前视场
int nAntiJamming; // 抗干扰状态
//*****3.目标核心信息*****
float nX; //目标中心点图像坐标x
float nY; //目标中心点图像坐标y
float nObjW; //目标宽度
float nObjH; //目标高度
float fAz; //目标当前方位角
float fPt; //目标当前俯仰角
// 目标预测位置
float fPredAz;
float fPredPt;
//*****4.其他属性信息*****
int nObjGray; //目标灰度
int nObjMaxGray; //目标极值灰度
int nMaxPosX; //目标极大值点X
int nMaxPosY; //目标极大值点Y
int nPixCnts; //目标像素个数
unsigned char ubSizeType; //目标尺寸类型:
float fProb; //目标识别置信度
float fSNR; //目标信噪比值
float fTgEntropy; //目标信息熵值
float fBgEntropy; //目标背景信息熵
float fSaliency; //目标显著性值
//
bool nJammingSucess; //目标成功干扰
int nClassID; //目标类型
// 如果处于跟踪状态,则输出下列值
RECT32S SA_SrBox;//小面目标跟踪波门
SizeType SA_SizeType;//尺度信息
RECT32S KCF_SrBox;//KCF波门
RECT32S TLD_SrBox;//TLD波门
FLOAT32 fConf;//跟踪置信度
emObjSrc ArithSrc;//跟踪算法来源,决策后
unsigned char byte[20];//预留
}ARIDLL_OBJINFO;
#endif
//与外部AI跟踪器的交互信息
typedef struct tagTRACKER_BOX
{
RECT32S rect;
FLOAT32 fscore;
}TRACKER_BOX;
typedef struct tagAITRACKER
{
int InferenceBoxNum;//推理输出结果个数(后处理前)
TRACKER_BOX bbox[20];//回归结果框
}AITRACKER;
#ifndef _ARIDLL_INPUTPARA_
#define _ARIDLL_INPUTPARA_
//输入【系统参数】结构体
typedef struct tagARIDLL_INPUTPARA
{
int nTimeStamp; //当前帧采集时刻时间戳,单位毫秒
int unFrmId; //当前帧图像帧编号
ServoInfo stServoInfo; //传感器伺服信息
CamInfo stCameraInfo; //相机信息
AirCraftInfo stAirCraftInfo; //载体信息
GuideInfo stGuideInfo; //外部引导信息
// 外部目标列表
int nInputTargetNum;
TARGET_OBJECT stInputTarget[50]; // 外部输入目标列表包含AI识别结果
// AI跟踪器结果
AITRACKER stAITrackerInfo;
}ARIDLL_INPUTPARA;
#endif
#ifndef _ARIDLL_DEBUGOUTPUT_
#define _ARIDLL_DEBUGOUTPUT_
//调试信息
typedef struct tagARIDLL_DEBUG_OUTPUT
{
// 单帧检测结果
int nDetectObjsNum;
ARIDLL_OBJINFO stFrameObjsInfo[20]; //检测所有目标信息数组
}ARIDLL_DEBUG_OUTPUT;
#endif
// 诱饵弹事件上报
typedef struct tagJammingBombMonitor
{
BBOOL bJammingBombLaunch;//跟踪时干扰弹投放
RECT32S rsJammingArea;//弹幕覆盖区域(密集投放不能区分)
POINT32F ptBombPoint[50];//干扰弹跟踪位置(少量投放可识别)
}JammingBombMonitor;
// 敌导弹事件
typedef struct tagMissileMonitor
{
SINT32 nEnemyMissleLaunch;//导弹发射个数
POINT32F ptBombPoint[4];//导弹跟踪位置
SINT32 byte[50];
}MissileMonitor;
// 复杂/高亮干扰监控
typedef struct tagHighLightJamming
{
BBOOL bJammingInterface;// 干扰目标交错
SINT32 nJammingInterfaceCnt;//交错最小帧计数
BBOOL bExplode;//爆炸火光
UBYTE8 byte[20];
}HighLightJamming;
// 相似物干扰
typedef struct tagSimilarJamming
{
SINT32 nSimilarCount;
UBYTE8 byte[20];
}SimilarJamming;
// 敌火力指示
#ifndef _ARIDLL_EVENT_OUTPUT_
#define _ARIDLL_EVENT_OUTPUT_
typedef struct tagTRACK_EVENT
{
bool JMBMonitor;// 干扰弹监控
bool MissMonitor;//敌导弹监控
}TRACK_EVENT;
#endif
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#ifndef _ARIDLL_OUTPUT_
#define _ARIDLL_OUTPUT_
//跟踪目标输出结构体
typedef struct tagARIDLL_OUTPUT
{
int nTimeStamp;//当前帧时间戳(透传),单位:毫秒
// 系统工作模式(透传)// by wcw04046 @ 2021/12/06
int nSysMode;
int nFrmNum;//处理帧计数
//*****工作状态*****
int nStatus; //待命/检测/跟踪/丢失状态信息等
//*****目标检测*****(短时航迹点,用于用户指示)
int nAlarmObjCnts; //当前帧告警目标总个数
ARIDLL_OBJINFO stAlarmObjs[50]; //检测目标信息数组
//*****目标跟踪*****(长时航迹点第0个为主目标送伺服跟踪)
int nTrackObjCnts; //跟踪目标个数
ARIDLL_OBJINFO stTrackers[10]; //跟踪器输出数组
// 以下为调试内容
// 事件处理信息,来自火控传感器自身,载机火力指示标记
TRACK_EVENT eventInfo;
// 调试信息输出
ARIDLL_DEBUG_OUTPUT stDebugInfo;
// 算法控制指令计算透传来自API调用
GLB_PCCOMMAND stCommand;
//YY输出管道信息绘图 管道处理框架
//MOT_Pipe *g_GLB_PipeProc;
float Arith_time; //算法运行耗时
}ARIDLL_OUTPUT;
#endif
/**********************************************************
* STD_CreatEOArithHandle()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API ArithHandle STD_CreatEOArithHandle();
/**********************************************************
* STD_DeleteEOArithHandle()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API void STD_DeleteEOArithHandle(ArithHandle hArith);
/**********************************************************
* ARIDLL_EOArithInit()
*
*
*
*
*
* GLB_PT_TYPE nPixelType 使
**********************************************************/
STD_TRACKER_API void ARIDLL_EOArithInit(ArithHandle hArith,int nWidth, int nHeight, GD_PIXEL_FORMAT_E nPixelType);
/**********************************************************
* ARIDLL_EOArithInit()
* 2 -
*
*
*
*
* GLB_PT_TYPE nPixelType 使
**********************************************************/
STD_TRACKER_API void ARIDLL_EOArithInitWithMode(ArithHandle hArith, int nWidth, int nHeight, GD_PIXEL_FORMAT_E nPixelType,
GLB_SYS_MODE nSysMode,GLB_SCEN_MODE nScenMode);
/**********************************************************
* ARIDLL_RunController()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API int ARIDLL_RunController(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, ARIDLL_INPUTPARA stInputPara, ARIDLL_OUTPUT* pstOutput);
//YY
//**********************************************************
//* 函数名称ARIDLL_SearchScanTargets()
//* 功能描述:周扫显示告警目标历史信息
//* 输入参数:
//* 输出参数:无
//* 返 回 值:无
//* 调用关系:无
//* 其它说明:无
//**********************************************************/
STD_TRACKER_API int ARIDLL_SearchScanTargets(ArithHandle hArithSrc, int PipeID, TARGET_OBJECT* pTargetArrayOut);
//**********************************************************
//* 函数名称ARIDLL_SearchFrameTargets()
//* 功能描述:执行单帧目标检测算法
//* 输入参数:
//* 输出参数:无
//* 返 回 值:无
//* 调用关系:无
//* 其它说明:无
//**********************************************************/
STD_TRACKER_API int ARIDLL_SearchFrameTargets(ArithHandle hArithSrc, GD_VIDEO_FRAME_S img, TARGET_OBJECT* pTargetArrayOut);
//**********************************************************
//* 函数名称ARIDLL_SearchFrameTargets()
//* 功能描述将ai识别结果拼接到目标列表
//* 输入参数:
//* 输出参数:无
//* 返 回 值:无
//* 调用关系:无
//* 其它说明:无
//**********************************************************/
STD_TRACKER_API int ARIDLL_MergeAITargets(ArithHandle hArithSrc, TARGET_OBJECT* pTargetArray,int num,obj_res* aiDetectArray,int aiNum);
/**********************************************************
* ARIDLL_LockCommand()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API void ARIDLL_LockCommand(ArithHandle hArithSrc, int nLockX,int nLockY,int nLockW,int nLockH);
/**********************************************************
* ARIDLL_GuideLockMultiCommand()
* - 使
*
*
*
*
*
**********************************************************/
STD_TRACKER_API void ARIDLL_GuideLockMultiCommand(ArithHandle hArithSrc, TargetGuide* guideList,int num);
/**********************************************************
* ARIDLL_ChangeLockCommand
*
* ID就修正该ID跟踪目标ID = -1
*
*
*
*
**********************************************************/
STD_TRACKER_API void ARIDLL_ChangeLockCommand(ArithHandle hArithSrc, int nLockX, int nLockY, int nLockW, int nLockH, int ID);
/**********************************************************
* ARIDLL_unLockCommand()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API void ARIDLL_unLockCommand(ArithHandle hArithSrc);
/**********************************************************
* ARIDLL_SetRunTimeParam()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API bool ARIDLL_SetRunTimeParam(ArithHandle hArithSrc, ARIDLL_PARMA config);
/**********************************************************
* ARIDLL_ReadSetParamFile()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API bool ARIDLL_ReadSetParamFile(ArithHandle hArithSrc, const char* configFilePath);
STD_TRACKER_API bool ARIDLL_ReadSetParamStream(ArithHandle hArithSrc,const char* configsstream);
/**********************************************************
* ARIDLL_SetScanMode()
*
*
*
*
*
*
**********************************************************/
STD_TRACKER_API void ARIDLL_SetSysMode(ArithHandle hArithSrc, GLB_SYS_MODE nSysMode);
/**********************************************************
* ARIDLL_SetWorkScen()
* ,
*
*
*
*
*
**********************************************************/
STD_TRACKER_API void ARIDLL_SetScenMode(ArithHandle hArithSrc, GLB_SCEN_MODE nScenMode);
// 标准接口至此结束
#ifdef __cplusplus
}
#endif
#endif