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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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()