You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

686 lines
26 KiB


#include <stdint.h>
#include <memory>
#include <string>
//#pragma pack(1)
const int IMAGE_WIDTH_IR = 1280;
const int IMAGE_HEIGHT_IR = 1024;
const int IMAGE_WIDTH_VL = 1920;
const int IMAGE_HEIGHT_VL = 1080;
const int PARA_IR_LINE = 40; //红外参数行
#define M_ST_OBJ_NUM (100)
#define M_LT_OBJ_NUM (10)
typedef struct tag_Objinfo
{
float x; //中心点x
float y; //中心点x
float w; //目标宽
float h; //目标高
float score; //置信度
int classIndex; //类别
int frameID; //图像帧编号
int key_ID; //关键部位序号
}OBJ_INFO;
typedef struct tgPointXY
{
double X;
double Y;
}PointXY;
typedef struct tarResult
{
unsigned char nObjID; //目标编号从1开始最大值为目标关联后目标数目
double tLon; //目标经度
double tLat; //目标纬度
double tH; //目标高度
double tX; //地心地固坐标系X
double tY; //地心地固坐标系Y
double tZ; //地心地固坐标系Z
double tSpeedX; //目标X方向速度
double tSpeedY; //目标Y方向速度
double tSpeedZ; //目标Z方向速度
double Speed; //目标的合速度
double tServoAz; //地理引导伺服输出方位角
double tServoPt; //地理引导伺服输出俯仰角
double ENUPole_Az; //北天东地理极坐标—方位角
double ENUPole_Pt; //北天东地理极坐标—俯仰角
double preDis; //线性预测激光测距值
}tarResult;
typedef struct stTrgOutput1
{
int nObjID; //目标编号
double tLon; //目标经度
double tLat; //目标纬度
double tH; //目标高度
double tX; //地心地固X
double tY; //地心地固Y
double tZ; //地心地固Z
double tSpeedX; //目标X方向速度
double tSpeedY; //目标Y方向速度
double tSpeedZ; //目标Z方向速度
double Speed; //目标的合速度
double sumLon; //目标经度和
double sumLat; //目标纬度和
double sumH; //目标高度和
double tfLon; //目标均值滤波经度
double tfLat; //目标均值滤波纬度
double tfH; //目标均值滤波高度
int T; //有源定位次数
double BLon; //图像中B点的经度
double BLat; //图像中B点的纬度
double BH; //图像中B点的高度
double ALon; //图像中心点的经度
double ALat; //图像中心点的纬度
double AH; //图像中心点的高度
}stTrgOutput1;
typedef struct
{
uint16_t u16Gpsweek; //GPS周
uint32_t u32Gpssec; //GPS秒
float fAz; //偏航角0360
float fPt; //俯仰角-9090
float fRol; //横滚角-180180
double i32Lat; //纬度-9090 比例系数1E-7
double i32Lon; //经度-180180 比例系数1E-7
float i32Height; //高度比例系数0.001
float fEspeed; //东向速度m/s +/-250
float fNspeed; //北向速度m/s +/-250
float fSkyspeed; //天向速度m/s +/-250
double dGyroX; //罗盘X轴角速度 m/s
double dGyroY; //罗盘Y轴角速度 m/s
double dGyroZ; //罗盘Z轴角速度 m/s
char hour; //时
char minute; //分
char second; //秒
int millsec; //毫秒
}INS_DATA1;
// 目标跟踪状态
typedef enum tagTrackingStatus1
{
xNOT_TRACKING = 0,//未跟踪
xSTABLE_TRACKING = 1,//稳跟
xMEM_TRACKING = 2//记忆跟踪
}TrackingStatus1;
typedef struct tagRect32S1 //BYTES: 4*4=16
{
int x; /*> 左上点x坐标 */
int y; /*> 左上点y坐标 */
int w; /*> 矩形宽度 */
int h; /*> 矩形高度 */
}RECT32S1;
// 尺度模式
typedef enum tagSizeType1
{
xunKnown, //不确定目标或未识别尺寸类型
xDimTarget, //弱小目标
xSmallTarget, //小目标
xMiddleTarget, //临界目标
xAreaTarget //面目标
}SizeType1;
// 目标检测算法标识
typedef enum tagemObjSrc1
{
xArith_DST = 1, // 检测来源--小目标
xArith_DAT = 2, // 检测来源--面目标
xArith_AI = 3, // 检测来源--AI检测
xArith_KCF = 4, // 检测来源--KCF
xArith_TLD = 5, // 检测来源--TLD
xArith_Manual = 6,
xArith_SiamRPN = 7, // 检测来源--SiamRPN
xArith_AIMap = 8 // 检测来源--AI检测映射
}emObjSrc1;
typedef struct tagARIDLL_OBJINFO1
{
//*****1.目标状态信息*****
int nFrameId; //目标当前信息所对应的帧编号
unsigned char unObjStatus; //目标搜索状态信息,更新/新增/删除
unsigned char bMainTracked; //目标是否为主跟踪目标
TrackingStatus1 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; //目标类型
// 如果处于跟踪状态,则输出下列值
RECT32S1 SA_SrBox;//小面目标跟踪波门
SizeType1 SA_SizeType;//尺度信息
RECT32S1 KCF_SrBox;//KCF波门
RECT32S1 TLD_SrBox;//TLD波门
float fConf;//跟踪置信度
emObjSrc1 ArithSrc;//跟踪算法来源,决策后
unsigned char byte[20];//预留
//-----------------------------------------------//
bool MoveStatus; // 运动状态true--运动 false -- 静止
}ARIDLL_OBJINFO1;
//////////////////////////
//地理引导信息
typedef struct
{
double fLon; //载机经度
double fLat; //载机纬度
double fWGS_H; //载机高度
double fPlatAz; //载机航向角
double fPlatPt; //载机俯仰角
double fPlatRoll; //载机横滚角
double fServoAz; //伺服方位角
double fServoPt; //伺服俯仰角
double x; //CGCS直角坐标x
double y; //CGCS直角坐标y
double z; //CGCS直角坐标z
double Distance; //激光测距值
double tLon; //目标经度(标定点真值)
double tLat; //目标纬度(标定点真值)
double tH; //目标高度(标定点真值)
}GeogGuideInfo;
//目标变化信息
typedef struct
{
char change[20];
float x1;
float y1;
float x2;
float y2;
}variationInfo;
//跟踪目标信息
//跟踪目标信息
typedef struct tagxARIDLL_OUTPUT
{
int nTimeStamp; //当前帧时间戳(透传),单位:毫秒
int nSysMode; // 系统工作模式(透传)
int nFrmNum; //处理帧计数
int nStatus; //工作状态--待命/检测/跟踪/丢失状态信息等
//目标检测(短时航迹点,用于用户指示)
int nAlarmObjCnts; //当前帧告警目标总个数
ARIDLL_OBJINFO1 stAlarmObjs[M_ST_OBJ_NUM]; //检测目标信息数组
//目标跟踪(长时航迹点第0个为主目标送伺服跟踪) //锁定主跟踪
int nTrackObjCnts; //跟踪目标个数
ARIDLL_OBJINFO1 stTrackers[M_LT_OBJ_NUM]; //跟踪器输出数组
}xTRACK_OUTPUT;
//目标融合识别信息
typedef struct tagOBJINFO_RECT
{
float nx; // 目标框中心点图像坐标x
float ny; // 目标框中心点图像坐标y
float nW; // 目标宽度
float nH; // 目标高度
float fconfidence; // 目标识别置信度
int class_id; // 目标类别
}OBJINFO_RECT1;
//地理引导结果
typedef struct stGuide
{
double Yaw1; //伺服方位解1
double Pitch1; //伺服俯仰解1
double Yaw2; //伺服方位解2
double Pitch2; //伺服俯仰解2
double ro; //目标和载机间直线距离(激光测距理论值)
}Guide;
//定位结果
typedef struct stTrgOutput2
{
unsigned char nObjID; //目标编号
double tLon; //目标经度
double tLat; //目标纬度
double tH; //目标高度
double tX; //地心地固X
double tY; //地心地固Y
double tZ; //地心地固Z
double tSpeedX; //目标X方向速度
double tSpeedY; //目标Y方向速度
double tSpeedZ; //目标Z方向速度
double Speed; //目标的合速度
}stTrgOutput2;
typedef struct tagFusionSpeed32F //BYTES: 2*4=8
{
float vx; //x方向速度
float vy; //y方向速度
float vz; //z方向速度
}SPEEDXYZ32F;
typedef struct tagPoint3D
{
double x; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵx<CFB5><78><EFBFBD><EFBFBD>
double y; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵy<CFB5><79><EFBFBD><EFBFBD>
double z; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵz<CFB5><7A><EFBFBD><EFBFBD>
} POINT_3D;
typedef struct tagPoint2S
{
short x; //<2F><>άͼ<CEAC><CDBC>x<EFBFBD><78><EFBFBD><EFBFBD>
short y; //<2F><>άͼ<CEAC><CDBC>y<EFBFBD><79><EFBFBD><EFBFBD>
} POINT_2S;
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ά<EFBFBD><CEAC><EFBFBD><EFBFBD><EFBFBD><E1B9B9>--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
typedef struct tagPoint3F
{
float x; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵx<CFB5><78><EFBFBD><EFBFBD>
float y; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵy<CFB5><79><EFBFBD><EFBFBD>
float z; //<2F><>άֱ<CEAC><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵz<CFB5><7A><EFBFBD><EFBFBD>
} POINT_3F;
//告警目标信息
typedef struct
{
unsigned int uiTargetTimeTag; //时间标签
unsigned short usMissleIdx; //标识告警目标索引目标编号1~255
unsigned short usMissleBatchNum; //目标批号,系统统一编号
unsigned short usGuideDetectState; //被引导红外探测状态 0无效 1成功
unsigned short usQuickWarningTag; //快速目标告警标识0=NA1快速告警2自主告警
short sAzimuthAng; //目标方位角单位0.01°,取值范围-180°~+180°
unsigned short usAzimuthAngErrorAbs; //方位角与均值的误差绝对值单位0.01°
short sPitchingAng; //目标俯仰角单位0.01°,取值范围-90°~+90°
unsigned short usPitchingAngErrorAbs; //俯仰角与估计均值的误差绝对值单位0.01°
unsigned char ucTargetType; //目标类型0=NA1=导弹2=未知
unsigned char ucSpatialAttribute; //空间属性0=NA1=空中2=地面
unsigned char ucIsActiveOrPassiveStage; //主被动状态0=NA1=主动段2=被动段
unsigned char ucNewOrOld; //目标新旧标记 0=旧目标 1=新目标
unsigned char ucTargetSize; //目标大小(尺寸)
unsigned short usTargetEnergy; //目标能量
POINT_2S pPos; //目标位置(图像坐标)
POINT_3F pPos3D; //目标映射到球面上的三维空间坐标
unsigned short usPlace; //小目标坐标位于哪一副图像
unsigned short usPipeIndex; //告警目标所在的管道序号
unsigned char ucIsNewAlarm; //是否为新的告警0为否1为是
unsigned char ucOutputAlarm; //待输出告警0表示不是告警1表示超出16个小于32个的候选告警目标2表示为筛选的四个告警目标20ms3表示为上报的告警目标100ms
short sAlarmTypeFlag; //告警类型标记
SPEEDXYZ32F fPlaneSpeedXYZ; //载体地心直角坐标系下的绝对速度
float fSpeedAz; //方位速度信息(相对载体)
float fSpeedPt; //俯仰速度信息(相对载体)
SPEEDXYZ32F fObjSpeedXYZ; //目标在地心直角坐标系下的绝对速度
float nDistance; //告警目标距离估计值
}ALARM_PARA;
typedef struct
{
float fAz;
float fPz;
float fservoAzSpeed; //当前帧伺服方位角速度,横滚角速度
float fservoPtSpeed; //当前帧伺服俯仰角速度
}Servo_Control;
typedef struct stdWgs84GPS
{
double Lon; //<2F><><EFBFBD><EFBFBD>
double Lat; //γ<><CEB3>
double Height; //<2F>߶<EFBFBD>
}STD_WGS84_GPS;
typedef struct stdSpeed //BYTES: 2*4=8
{
double vx; //x<><78><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
double vy; //y<><79><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
double vz; //z<><7A><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD>
}STD_SPEED;
typedef struct stdPoint64d
{
double X; //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵX
double Y; //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵY
double Z; //<2F><><EFBFBD><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵZ
}STD_POINT64D;
typedef struct stdFilter_State
{
//<2F><>صع̵<D8B9><CCB5><EFBFBD>ֱ<EFBFBD><D6B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵϵ
STD_WGS84_GPS nKalManBLH; //Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵBLH<4C><48>WGS84<38><34><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
STD_POINT64D pfKalmanPos; //Ŀ<><C4BF><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> //BYTES: 2*4=8
STD_WGS84_GPS nKalManBLHNext; //Ŀ<><C4BF><EFBFBD><EFBFBD>һ֡<D2BB><D6A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϵBLH<4C><48>WGS84<38><34><EFBFBD><EFBFBD>Ϣ<EFBFBD><CFA2><EFBFBD><EFBFBD><EFBFBD>ƽ<EFBFBD><C6BD>
STD_POINT64D pfKalmanPosNext; //Ŀ<><C4BF><EFBFBD><EFBFBD>һ֡<D2BB>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><CEBB> //BYTES: 2*4=8
STD_POINT64D fKalmanSpeed; //Ŀ<><C4BF><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> x\y\z<><7A><EFBFBD><EFBFBD> //BYTES: 2*4=8
STD_POINT64D fKalmanAccSpeed; //Ŀ<><C4BF><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD>Ƽ<EFBFBD><C6BC>ٶ<EFBFBD> x\y\z<><7A><EFBFBD><EFBFBD> //BYTES: 2*4=8
}STD_FILTER_ST;
typedef struct stdServo
{
double fAz; //方位角
double fPt; //俯仰角
double nDistance; //目标激光距离
}STD_SERVO;
typedef struct stdFilterVideoOutput //BYTES: 3*1 + 1*2 + 7*4 + 3*8 = 57
{
unsigned char nOutputNums; //输出滤波目标个数
bool bObject; //标识目标是否已被创建。1-目标已创建0-目标未创建
unsigned int unFrmTime; //目标截获时刻
unsigned int unFrmID; //帧编号
//目标滤波信息
STD_WGS84_GPS nObjBLH; //大地坐标系wgs84 目标经纬高
STD_SPEED pfObjSpeed; //目标地心直角坐标系下的绝对速度
STD_POINT64D pfObjCurrent; //目标的大地直角空间坐标系
STD_FILTER_ST pfObj_filterInfo; //目标估计状态
//载体信息
STD_WGS84_GPS nPlatBLH; //大地坐标系wgs84 目标经纬高
STD_SPEED pfPlatSpeed; //目标地心直角坐标系下的绝对速度
STD_POINT64D pfPlatCurrent; //目标的大地直角空间坐标系
STD_FILTER_ST pfPlat_filterInfo; //载体估计状态
//估计信息
STD_SERVO pfObjZtAangle; //目标在载体坐标的指向
STD_SERVO pfObjServeAangle; //目标在伺服坐标的指向
//预测信息
STD_SERVO pfObjZtAangleNext; //目标在载体坐标的指向
STD_SERVO pfObjServeAangleNext; //目标在伺服坐标的指向
//量测信息
STD_SERVO pfServeAangle; //伺服码盘值 //输入值【可不移植】
//长时间外推
STD_SERVO pfServeAanglePredict[10]; //伺服长时间外推,10s
STD_WGS84_GPS nPlatPreictBLH[10];
STD_WGS84_GPS nObjPredictBLH[10];
}STD_FILTER_VIDEOOUTPUT;
typedef struct Angle2DSpeed32f
{
double fPt;//俯仰角
double fAz;//方位角
}ANGLE2DSPEED32F;
//2.大地坐标系WGS84_GPS结构体
typedef struct tagGPS
{
float Lon; //经度
float Lat; //纬度
float Height; //高度
} WGS84_GPS;
//载机姿态角度结构体
typedef struct tagAngle3D32F
{
float fAz; //偏航角
float fPt; //俯仰角
float fRt; //滚转角
}ANGLE3D32F;
//融合信息
typedef struct tagFusionTarget
{
bool bOccupy; //标识管道是否已经被占用
unsigned char nTargetID; //目标批号
unsigned char nObjClassID; //目标类别
float score; //融合后目标识别的置信度
//目标信息未定位时以下3个结构体变量输出为0
WGS84_GPS ObjBLH; //目标大地坐标系BLHWGS84信息
POINT_3D ObjXYZ; //目标地心直角坐标系下XYZ
SPEEDXYZ32F fObjSpeedXYZ; //目标地心直角坐标系下的绝对速度
//本机载机信息
WGS84_GPS PlaneBLH; //载机大地坐标系BLHWGS84信息
POINT_3D fPlanePnt; //本机位置
SPEEDXYZ32F sfPlaneSpeed; //本机速度
ANGLE3D32F fPlaneAngle; //载机姿态(机体坐标系)
//目标融合位置信息:地固地心坐标系
POINT_3D ptBornPos; //目标初始位置
POINT_3D ptPredictPos; //目标预测位置
//只能提供已定位的本机以及外机的光电目标信息,外机未定位目标无法提供相对本机的方位、俯仰
//(缺少距离信息,或这友机信息只提供定位后的目标信息)
float fAz; //目标方位角(相对于载体,定位目标的相对角度)
float fPt; //目标俯仰角(相对于载体)
ANGLE2DSPEED32F sfSpeed; //目标速度
//ANGLE2DSPEED32F sfPredictAngle; //目标角度位置
bool bLocation; //已定位数据标志位定位模块可以提供
bool JMBMonitor; //敌方是否投放干扰弹(透传)
bool MissMonitor; //敌方是否发射导弹(透传)
}FUSION_OBJECT;
//目标意图
typedef struct TarGetPurpose
{
unsigned char ucFoeState; //敌机状态,具体为上面几种宏定义的状态
float fConfidence; //当前意图判断的置信度(作为备用字段)
}TarGetPurpose;
//意图结果
typedef struct FusedDataDst
{
unsigned char ucNumber; //敌目标编号
unsigned char ucClassType; //敌目标类型, 1防空导弹车2雷达车3高炮4飞机5是装甲、汽车、油罐车等地面车辆
//事件信息
bool bFoeRadarIsOpen; //雷达是否展开
bool bFoeMissileIsOpen; //导弹车是否竖起
bool bFoeCannonIsopen; //高炮是否竖起
bool bFoeCarsIsAround; //高炮或防空导弹是否散开
bool bFoeCarsIsArrange; //高炮或防空导弹是否成一字型
bool bFoeIsFire; //敌是否发射导弹或高炮
float fFoeSpeed; //敌速度
float fFoeDistance; //敌我距离
float fAzimuthAng; //目标方位角
float fPitchingAng; //目标俯仰角
POINT_3D FoeLocation; //目标坐标
POINT_3D ObjPrePath[10]; //目标预测轨迹
// POINT_3D FoeGroundLoc[10]; //地面遭遇位置
float fOurPlaneSpeed; //我机飞行速度
bool bOurPlaneSearchRadar; //我机是否开启搜索雷达
bool bOurPlaneTrackRadar; //我机是否开启跟踪雷达
bool bOurMissile; //我机是否发射导弹
POINT_3D OurPlaneLocation; //我机坐标
TarGetPurpose ObjPurPose; //目标意图
}FusedDataDst;
//威胁等级排序
typedef struct ParaThreatOutput
{
char bDangerLevel; //目标威胁等级(编号为1目标威胁等级最高)
char uObjID; //威胁目标对应的编号
float fThreat; //目标威胁程度(值越大等级越小,即威胁程度越高)
}PTOutput;
//激光测距值
typedef struct
{
int type; //激光测距类型
int freq; //激光测距频率
double laserDistance; //激光测距值
}LaserInfo;
typedef enum tagGLB_VIDE_TYPE
{
xGLB_VIDEO_IR_SW = 0x01, //红外短波
xGLB_VIDEO_IR_MW = 0x02, //红外中波
xGLB_VIDEO_IR_LW = 0x03, //红外长波
xGLB_VIDEO_VL = 0x04 //电视
}GLB_VIDE_TYPE;
//相机信息
typedef struct
{
GLB_VIDE_TYPE unVideoType; //视频源类型
float dx; //光轴与图像中心像素偏差x
float dy; //光轴与图像中心像素偏差y
int ImgWidth; //图像分辨率宽
int ImgHeight; //图像分辨率高
float nPixleSize; //像元尺寸 单位um
float nFocal; //相机焦距 单位mm
}CamInfo1;
//载机信息
typedef struct
{
unsigned char nPlaneID; //载机ID
double B; //纬度
double L; //经度
double H; //高
double fRoll; //横滚角
double fPitch; //俯仰角
double fYaw; //方位角
}AirCraftInfo1;
// //伺服信息
// typedef struct
// {
// float fServoAz; //当前帧伺服方位角
// float fServoPt; //当前帧伺服俯仰角
// float fServoAzSpeed; //当前帧伺服方位角速度
// float fServoPtSpeed; //当前帧伺服俯仰角速度
// }ServoInfo1;
//UTC时间
typedef struct TIME
{
unsigned short year; //年0-65535
unsigned char month; //月1-12
unsigned char day; //日1-31
unsigned char hour; //时0-23
unsigned char minute; //分0-59
unsigned char second; //秒0-59
unsigned short msecond; //毫秒0-990LSB=10ms
}UTC_TIME;
//跟踪目标输出结构体
typedef struct tagPARALINE_OUTPUT
{
unsigned int index;
CamInfo1 caminfo; //相机信息
AirCraftInfo1 airCraftInfo; //载机信息
Servo_Control servoInfo; //伺服信息
GeogGuideInfo stGuideInfo; //地理引导信息
LaserInfo stLaserInfo; //激光测距
//*************************** 各模块算法结果与状态 ****************************
uint32_t str_identifyIR_obj_cnt; //红外图像智能识别目标个数
OBJ_INFO str_identifyIR_objs[50]; //红外图像智能识别目标结果
uint32_t str_identifyVL_obj_cnt; //可见光图像智能识别目标个数
OBJ_INFO str_identifyVL_objs[50]; //可见光图像智能识别目标结果
uint32_t m_segmentIR_obj_cnt; //红外地物分类个数
OBJ_INFO m_segmentIR_objs[10]; //红外地物分类目标
uint32_t m_segmentVL_obj_cnt; //可见光地物分类个数
OBJ_INFO m_segmentVL_objs[10]; //可见光地物分类目标
// uint32_t m_ChangeinfoIR_obj_cnt; //红外变化检测个数
// variationInfo m_ChangeinfoIR_objs[30]; //红外变化检测目标
// uint32_t m_ChangeinfoVL_obj_cnt; //可见光变化检测个数
// variationInfo m_ChangeinfoVL_objs[30]; //可见光变化检测目标
xTRACK_OUTPUT m_trackIR_objs; //红外跟踪目标结果
xTRACK_OUTPUT m_trackVL_objs; //可见光跟踪目标结果
int ObjCnts_IR; //目标总个数(融合后红外视场内)
OBJINFO_RECT1 AIDetFusion_IR[50]; //红外图上AI融合结果
int ObjCnts_VL; //目标总个数(融合后可见光视场内)
OBJINFO_RECT1 AIDetFusion_VL[50]; //可见光图上AI融合结果
Guide m_geogGuideInfo; //地理引导结果
uint32_t m_activeLoc_cnt; //多目标有源定位个数
stTrgOutput1 m_mulActiveLoc[50]; //多目标定位结果
stTrgOutput1 m_singleActiveLoc; //单目标有源定位测速结果
stTrgOutput1 m_passiveLocate[50]; //无源定位结果
// uint32_t m_Alarm_obj_cnt; //红外告警目标个数
// ALARM_PARA m_Alarm_Papa[16]; //红外告警目标结果
// uint32_t m_Filter_obj_cnt; //航迹滤波目标个数
// STD_FILTER_VIDEOOUTPUT objFilterRes[50]; //航迹滤波结果
// unsigned int nFusionNumber; //融合后目标总个数
// FUSION_OBJECT objFusionList[60]; //融合输出结果
// int targetPurpnum; //目标意图个数
// FusedDataDst fusedatasrc[50]; //意图识别结果(输入透传输出)
// int m_threadLevel_cnt; //威胁等级目标个数
// PTOutput m_threadLevel_obj[100]; //威胁等级排序结果
UTC_TIME utcTime_laser;
UTC_TIME utcTime_ir;
}PARALINE_OUTPUT;
typedef struct S729paras_VL
{
//unsigned char IMG_VL[IMAGE_WIDTH_VL * IMAGE_HEIGHT_VL * (3 / 2)];
PARALINE_OUTPUT Paras_VL;
}Paras_VL;
typedef struct S729paras_IR
{
//unsigned char IMG_IR[IMAGE_WIDTH_IR * IMAGE_HEIGHT_IR * 2];
PARALINE_OUTPUT Paras_IR;
}Paras_IR;
//TRACK_OUTPUT outputIR = { 0 };
//TRACK_OUTPUT outputVL = { 0 };
//#pragma pack()