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.

970 lines
32 KiB

7 months ago
#ifndef _CommDef_H_
#define _CommDef_H_
namespace Commdef
{
#define TEST_OFFSET_RAM 0x00000000 //(1024*1024*1024-TEST_BUFF_LEN)
#define MAX_UP_SIZE 20*1024*1024
#define MAX_FRAME_LENGTH 32768 // 每包最大128字节有效数据
#define BUFF_SIZE 1040
#ifndef _byte_def_
#define _byte_def_
typedef unsigned char BYTE, Byte, byte, UBYTE8;
#endif
using namespace std;
#define DEFAULT_IMAGE_WIDTH 1920
#define DEFAULT_IMAGE_HEIGHT 1080
#define DEFAULT_IMAGE_MAX_SIZE (DEFAULT_IMAGE_WIDTH * DEFAULT_IMAGE_HEIGHT * 4)
#ifndef _ushort_def_
#define _ushort_def_
typedef unsigned short USHORT, UINT16;
#endif
#ifndef _short_def_
#define _short_def_
typedef signed short SHORT, SINT16;
#endif
#ifndef _float_def_
#define _float_def_
typedef float FLOAT32;
#endif
#ifndef _uint_def_
#define _uint_def_
typedef unsigned int UINT, UINT32;
#endif
#ifndef _int_def_
#define _int_def_
typedef signed int INT, INT32, SINT32;
#endif
#define STREAM_ID_VL (0)
#define STREAM_ID_IR (1)
#define MAX_SPEED_LEVEL 10000 //手动控制最高速度等级
#define MIN_SPEED_LEVEL 1 //手动控制最低速度等级
#define DEFAULT_SPEED_LEVEL 100 //手动控制默认速度等级
#define REAL_SPEED_VALUE 80 //伺服控制最大速度 80 °/s
#define IMAGE_VL_TRACK_W (1920) //可见光跟踪区域宽度
#define IMAGE_VL_TRACK_H (1080) //可见光跟踪区域高度
#define IMAGE_IR_TRACK_W (640) //红外跟踪区域宽度
#define IMAGE_IR_TRACK_H (512)
//#define USE_GL
enum VideoFormatType
{
VideoFormatTypeIR = 0, //红外
VideoFormatTypeVL = 1, //可见光
};
typedef enum eResultShowFlag
{
ResultShowFlagDetectObj = 1, //图像上绘制检测目标
ResultShowFlagTrackObj, //图像上绘制跟踪目标
}ResultShowFlag;
/*******************DSP跟踪算法结果*******************/
typedef struct SoftVersionStruct
{
unsigned char x_a;
unsigned char y;
unsigned short year;
unsigned char day;
unsigned char month;
} SoftVersion;
typedef struct ServoInputCmdStruct
{
UBYTE8 ServoInfo[40];
}ServoInputCmd;
typedef struct ServoInfoOutputStruct
{
UBYTE8 ServoMode;
UBYTE8 Servo_Version;
UINT16 Reserved3;
UINT32 Servo_SelfTest;
float Servo_AzAngle;
float Servo_PtAngle;
float Servo_AzSpeed;
float Servo_PtSpeed;
int Reserved;
}ServoInfoOutput;
typedef struct POSInfoOutputStruct
{
float HeadingAngle;
float PitchingAngle;
float RollingAngle;
float Longitude;
float Latitude;
int Height;
UINT16 Reserved[4];
}POSInfoOutput;
typedef struct ServoAndPOSInfoOutputStruct
{
// ServoInputCmd ServoInputInfo;
// UINT16 Reserved[10];
ServoInfoOutput ServoInfo;
POSInfoOutput POSInfo;
} ServoAndPOSInfoOutput;
typedef struct LaserInfoOutputStruct
{
SINT16 Freq;
UBYTE8 Status;
UBYTE8 SelfTest;
SINT32 Dist;
SINT16 Reserved;
} LaserInfoOutput;
typedef struct OutVectoringInfoOutputStruct
{
UBYTE8 VectorObjType;
UBYTE8 TrackerObjType;
float AzAngleAtServo;
float PtAngleAtServo;
float AzAngleAtGeography;
float PtAngleAtGeography;
UINT32 Dist;
UINT16 Reserved[4];
}OutVectoringInfoOutput;
typedef struct TrackerObjectOutputStruct
{
UBYTE8 ID;
UBYTE8 Type;
SINT16 X;
SINT16 Y;
SINT16 W;
SINT16 H;
SINT16 DeltX;
SINT16 DeltY;
SINT16 AzAngle;
SINT16 PtAngle;
SINT16 Reserved;
}TrackerObjectOutput;
typedef struct DetectObjectOutputStruct
{
UBYTE8 ID;
UBYTE8 ArithType;
SINT16 X;
SINT16 Y;
UBYTE8 W;
UBYTE8 H;
// UBYTE8 SNR;
// UBYTE8 ObjType;
UINT16 PixSize;
}DetectObjectOutput;
typedef struct tagDLLDEBUGINFOOutput
{
SINT16 fDebug_KCF_MAXRes;
SINT16 fDebug_KCF_CurThres;
SINT16 nDebug_KCF_BestScale;
SINT16 nDebug_Lost_Cnts;
SINT16 nDebug_LK_CX;
SINT16 nDebug__LK_CY;
SINT16 nDebug_LK_W;
SINT16 nDebug_LK_H;
SINT16 nDebug_Recap_CX;
SINT16 nDebug_Recap_CY;
SINT16 nDebug_Recap_W;
SINT16 nDebug_Recap_H;
SINT16 nDebug_Recap_Cnts;
SINT16 nDebug_Aim_Cnts;
SINT16 nDebug_ObjDivison_CX;
SINT16 nDebug_ObjDivison_CY;
SINT16 nDebug_ObjDivison_W;
SINT16 nDebug_ObjDivison_H;
SINT16 nDebug_SmallObjCnts;
SINT16 nDebug_DimObjCnts;
SINT16 nDebug_AreaObjCnts;
SINT16 nDebug_MoveObjCnts;
SINT16 nDebug_AiObjCnts;
SINT16 nDebug_ObjCnts;
unsigned char bDebug_LK_Success;
unsigned char Reserved;
}ARIDLL_DEBUG_INFOOutput;
typedef struct tagSIMULATE_OUTPUT
{
UINT16 ubSimulateValid;
//目标参数
SINT16 nTargetPosX;
SINT16 nTargetPosY;
UBYTE8 nTargetWidth;
UBYTE8 nTargetHeight;
UINT16 nTargetGray;
}SIMULATE_OUTPUT;
//DSP
typedef struct tagTrackerResultOutput_DSP
{
UINT16 FrameHead[4];
UINT32 FrameID_IMG; //输入图像帧编号(跟踪结果对应图像帧)
UINT32 FrameID_DSP; //DSP 图像帧
UINT16 AgreeMentVersion; //标准协议版本
UINT16 Length; //参数方行数
UINT16 DSP_SelfTest; //DSP自检结果
UINT16 Reserved1;
SoftVersion DSPSoftVersion;
UINT16 RunTime[8]; //算法运算时间
UINT16 Video1FrameRate; //视频源1帧频
UINT16 Video2FrameRate; //视频源2帧频
UINT16 Video3FrameRate; //视频源3帧频
UINT16 Video4FrameRate; //视频源4帧频
UINT16 Reserved2[3];
UINT16 VideoSource; //图像视频源
UINT16 Resol; //像元角分辨率
UINT16 Focus;
UINT16 ImgWidth; //图像宽
UINT16 ImgHeight; //图像高
UINT16 ProcessWidth; //算法处理图像宽
UINT16 ProcessHeight; //算法处理图像高
UBYTE8 ProcessMode;//算法图像截取方式
UBYTE8 ImgType; //红外图像像素类型
UINT16 ProcessCenterX;
UINT16 ProcessCenterY;
ServoAndPOSInfoOutput ServoAndPOSInfo;
LaserInfoOutput LaserInfo;
OutVectoringInfoOutput OutVectoringInfo;
UBYTE8 SysMode; //DSP
UBYTE8 WorkScene;
UBYTE8 WorkMode;
UBYTE8 CursorShowFlag; //光标显示/消隐
UINT16 CursorX;
UINT16 CursorY;
SINT16 DeltX;
SINT16 DeltY;
UBYTE8 ObjDetectCnt; //目标检测个数
UBYTE8 ObjTrackCnt; //目标跟踪个数
UBYTE8 ObjTrackArith; //目标跟踪算法标识
UBYTE8 ObjDetectArith; //目标检测算法标识
UBYTE8 ObjReDetectArith; //重补算法标识
UBYTE8 Reserved3;
UBYTE8 ReCorrectFlag;
UBYTE8 Reserved4;
TrackerObjectOutput TrackerObject[10];
DetectObjectOutput DetectObject[20];
ARIDLL_DEBUG_INFOOutput DebugInfo;
SIMULATE_OUTPUT SimulateObj[5];
UINT16 Reserved5[288]; //目标跟踪结果
UINT16 Reserved6;
UINT16 TrackerXOR;
UINT16 Reserved7[360]; //跟踪板算法参数(需界面显示)
UINT16 nObjCntPerFrame; //单帧目标检测结果
UINT16 Reserved8[919]; //单帧目标检测结果
UINT16 nObjCntInPipe; //管道目标个数
UINT16 Reserved9[1801]; //管道结果
UINT16 Reserved10[113];
UINT16 Xor;
UINT16 FrameEnd[4];
}TrackerResultOutput_DSP;
#define SOURCE_VEDIO_NUM (16)
//十字框的颜色和类型
#define CURSOR_COLOR_WHITE 0
#define CURSOR_COLOR_BLACK 1
#define CURSOR_COLOR_RED 2
#define CURSOR_COLOR_GREEN 3
#define CURSOR_COLOR_YELLOW 4
#define CURSOR_TYPE_SOLID 0 //实心十字
#define CURSOR_TYPE_HOLLOW 1 //空心十字
//目标框的颜色和类型
#define OBJBOX_COLOR_WHITE 0
#define OBJBOX_COLOR_BLACK 1
#define OBJBOX_COLOR_RED 2
#define OBJBOX_COLOR_GREEN 3
#define OBJBOX_COLOR_YELLOW 4
#define OBJBOX_TYPE_SOLID 0 //实线框
#define OBJBOX_TYPE_DOTTED 1 //虚线框
#define OBJBOX_TYPE_DOTTEDFLASH 2 //虚线框闪烁
#define OBJBOX_TYPE_QUADRANGLES 3 //四角框
#define OBJBOX_TYPE_CROSS 4 //四角框
//字符块的颜色和类型
#define CHARBLOCK_COLOR_WHITE 0
#define CHARBLOCK_COLOR_BLACK 1
#define CHARBLOCK_COLOR_RED 2
#define CHARBLOCK_COLOR_GREEN 3
#define CHARBLOCK_COLOR_YELLOW 4
#define CHARBLOCK_TYPE_FTRANSP 0 //全透明
#define CHARBLOCK_TYPE_HTRANSP 1 //半透明
#define CHARBLOCK_TYPE_BGBLACK 2 //背景全黑
#define CHARBLOCK_TYPE_BGWHITE 3 //背景全白
#define VISTEP_X 16 //可见光x轴方向缩放步长
#define VISTEP_Y 9 //可见光y轴方向缩放步长
#define IRSTEP_X 5 //红外x轴方向缩放步长
#define IRSTEP_Y 4 //红外y轴方向缩放步长
#define TestInfoNum 11 //测试信息组数
typedef struct TagParaLineAnalyseInfo
{
UINT32 uiContrlCmdTotalNum; //进入控制命令参数行解析的总数
UINT32 uiAIResultTotalNum; //进入AI结果参数行解析的总数
UINT32 uiIRInfoTotalNum; //进入IR参数行解析的总数
UINT32 uiContrCmdHeaderErrorNum; //控制命令参数行头错误与AI结果参数行头错误的总数
UINT32 uiAIResultHeaderErrorNum; //AI结果参数行头不对的总数
UINT32 uiIRInfoHeaderErrorNum; //IR头不对的总数
UINT32 uiContrCmdLenErrorNum; //控制命令参数行长度错误的计数
UINT32 uiAIResultLenErrorNum; //AI结果参数行长度错误的计数
UINT32 uiContrCmdTailErrorNum; //控制命令参数行尾部不正确
UINT32 uiAIResultTailErrorNum; //AI结果参数行尾部不正确
// UINT32 uiIRInfoTailErrorNum; //IR参数行尾部不正确
UINT32 uiContrCmdCheckErrorNum; //控制命令参数行校验不正确
UINT32 uiAIResultCheckErrorNum; //AI结果参数行校验不正确
UINT32 uiIRInfoCheckErrorNum; //IR参数行校验不正确
UINT32 uiContrCmdParaSetNum; //控制命令算法参数设置命令总数
UINT32 uiTrackContrCmd1Num; //控制命令算法参数中跟踪命令1总数
UINT32 uiTrackContrCmd2Num; //控制命令算法参数中跟踪命令2总数
UINT32 uiTrackContrCmd3Num; //控制命令算法参数中跟踪命令3总数
UINT32 uiContrCmd1Num; //控制命令算法参数中控制命令1总数
UINT32 uiContrCmd2Num; //控制命令算法参数中控制命令1总数
UINT32 uiAIResultNum; //正确解析的AI结果计数
UINT32 uiIRResultNnm; //正确解析的IR结果计数
UINT32 uiFpgaFrameNumNoContinue; //fpga帧编号不连续计数
UINT32 uiFpgaFrameCurrentNum; //不连续时当前帧的帧编号
UINT32 uiFpgaFramePreNum; //不连续时上一帧的帧编号
}TParaLineAnalyseInfo;
//软件版本信息
typedef struct TagSoftVersionInfo
{
unsigned char a : 4;
unsigned char x : 4;
unsigned char y;
unsigned short year;
unsigned char day;
unsigned char month;
}TSoftVersionInfo;
//光纤信息
typedef struct TagFiberInputInfo
{
UINT16 usFiberInputImgWidth;
UINT16 usFiberInputImgHeight;
UINT16 usFiberInputPeriod;
UINT16 usLvdstoArmImgWidth;
UINT16 usLvdstoArmImgHeight;
}TFiberInputInfo;
//参数行头
typedef struct TagParaLineHeader
{
UINT16 usHeaderTag[4]; //固定头
UINT32 uiFrameNum; //帧编号
UINT32 uiChipFrameNum; //各自的器件帧编号
UINT16 usVersion; //协议版本号
UINT16 usParaLineLen; //参数行总数
}TParaLineHeader;
//参数行尾部
typedef struct TagParaLineTail
{
UINT16 usCheckSum; //校验和
UINT16 usTailTag[4]; //帧尾
}TParaLineTail;
/*********************************************************************************/
//控制命令参数行
typedef struct TagContrCmdInfo
{
TParaLineHeader tContrCmdHeader; //参数行头
UINT16 usFpgaCheckResult[2]; //fpga自检结果
TSoftVersionInfo tSoftVersionInfo; //软件版本信息
UINT16 usRecvUartCmdCnt; //接收综控串口命令总数
UINT16 usSendDspCmdCnt; //发送给dsp串口命令总数
UINT16 resv0[3];
TFiberInputInfo stFiberInputInfo[4]; //光纤信息
UINT16 resv1[20]; //预留
UINT16 usContrCmd1Flag; //控制命令1有效标志
UBYTE8 ucContrCmd1[38]; //控制命令1
UINT16 usContrCmd2Flag; //控制命令1有效标志
UBYTE8 ucContrCmd2[38]; //控制命令1
UINT16 usCycleCmdFlag; //周期指令
UBYTE8 ucCycleCmd[128]; //周期指令内容
UINT16 resv2[35]; //预留
UINT16 usAlgoParaSetCmdFlag; //算法参数设置命令有效标志
UBYTE8 ucAlgoParaSetCmd[118]; //算法参数设置命令
UINT16 usTrackContrCmd1Flag; //跟踪控制命令有效标志
UBYTE8 ucTrackContrCmd1[38]; //跟踪控制命令
UINT16 usTrackContrCmd2Flag; //跟踪控制命令有效标志
UBYTE8 ucTrackContrCmd2[38]; //跟踪控制命令
UINT16 usTrackContrCmd3Flag; //跟踪控制命令有效标志
UBYTE8 ucTrackContrCmd3[38]; //跟踪控制命令
UBYTE8 ucFeedbackCmdFlag; //反馈指令有效标志
UBYTE8 ucFeedbackCmdBytes; //反馈指令总字节数最大255个字节
UBYTE8 ucFeedbackCmd[256]; //反馈内容
UINT16 resv3[186]; //预留
TParaLineTail tContrCmdTail; //控制命令帧尾
}TContrCmdInfo;
/*********************************************************************************/
//注入参数行
typedef struct TagInjectParaInfo
{
TParaLineHeader tContrCmdHeader; //参数行头
UINT16 usResv0[2]; //预留
TSoftVersionInfo tSoftVersionInfo; //软件版本信息
UINT16 usResv1[5]; //预留
UINT16 usVideoSrc; //视频源类型
UINT16 ImgWidth; //图像宽度
UINT16 ImgHeight; //图像高度
UINT16 usFocus; //焦距值
UINT16 usPixelSize; //像元尺寸
UINT16 usSvoAglReso; //像元角分辨率
UINT16 usResv2[2]; //预留
FLOAT32 fServoAz; //伺服方位角
FLOAT32 fServoPt; //伺服俯仰角
FLOAT32 fTagENUAz; //目标当前东北天下方位角
FLOAT32 fTagENUPt; //目标当前东北天下俯仰角
FLOAT32 fRoll; //载体横滚角
FLOAT32 fPitch; //载体俯仰角
FLOAT32 fYaw; //载体方位角
UINT16 usResv3[593]; //预留
TParaLineTail tContrCmdTail; //控制命令帧尾
}TInjectParaInfo;
/********************************************************************************/
//ARM AI结果参数行
typedef struct TagAIResultInfo
{
TParaLineHeader tAIResultHeader; //参数行头
UINT16 usArmCheckResult; //arm自检结果
UINT16 resv1; //保留
TSoftVersionInfo tSoftVersionInfo; //软件版本信息
UINT16 resv[620];
TParaLineTail tAIResultTail; //帧尾
}TAIResultInfo;
/***********************************************************************************/
/*********************dsp跟踪结果信息**************************************************/
//伺服输出信息
typedef struct TagServoInfoOutput
{
UBYTE8 ucServoMode; //伺服工作模式
UBYTE8 ucServoVersion; //伺服版本
UINT16 resv1; //预留
UINT32 uiServoSelfTest; //伺服自检信息
float fServoAzAngle; //伺服方位角
float fServoPtAngle; //伺服俯仰角
float fServoAzSpeed; //方位角速度
float fServoPtSpeed; //俯仰角速度
SINT32 resv2; //预留
}TServoInfoOutput;
//定位定向信息
typedef struct TagPOSInfoOutput
{
float fHeadingAngle;
float fPitchingAngle;
float fRollinggAngle;
float fLongitude;
float fLatitude;
SINT32 siHeight;
SINT16 Reserved[4];
}TPOSInfoOutput;
//伺服及定位定向信息
typedef struct TagServoAndPOSInfoOutput
{
TServoInfoOutput tServoInfo; //伺服信息
TPOSInfoOutput tPOSInfo; //定位定向信息
}TServoAndPosInfoOutput;
//激光测距
typedef struct TagLaserInfoOutput
{
UINT16 usLaerCeJuFreq; //激光测距频率
UBYTE8 usLaerCeJuStatus; //激光测距状态
UBYTE8 usLaerSelfTest; //激光测距自检信息
UINT32 usLaerCeJuDist; //激光测距值
SINT16 Reserved; //保留
}TLaserInfoOutput;
//外引导信息
typedef struct TagOutVectoringInfoOutput
{
UBYTE8 ucVectorObjType; //外引导目标类型
UBYTE8 ucTrackerObjType; //跟踪目标类型
float fAzAngleAtServo; //外引导方位角(伺服系)
float fPtAngleAtServo; //外引导俯仰角(伺服系)
float fAzAngleAtGeography; //外引导方位角(地理系)
float fPtAngleAtGeography; //外引导俯仰角(地理系)
UINT32 uiDist; //外引导距离
UINT16 Reserved[4];
}TOutVectoringInfoOutput;
//跟踪目标信息
typedef struct TagTrackerObjectOutput
{
UBYTE8 ucTargetId;
UBYTE8 ucTargetType;
UINT16 X;
UINT16 Y;
UINT16 W;
UINT16 H;
SINT16 DeltX;
SINT16 DeltY;
SINT16 AzAngle;
SINT16 PtAngle;
SINT16 Reserved;
}TTrackerObjectOutput;
//Q_DECLARE_METATYPE(TTrackerObjectOutput)
//检测目标信息
typedef struct TagDetectObjectOutput
{
UBYTE8 ucTargetId;
UBYTE8 ucArithType;
UINT16 X;
UINT16 Y;
UBYTE8 W;
UBYTE8 H;
UBYTE8 SNR;
UBYTE8 ObjType;
}TDetectObjectOutput;
//Q_DECLARE_METATYPE(TDetectObjectOutput)
//界面显示测试信息
typedef struct TagDllDebugInfoOutput
{
SINT16 fDebug_KCF_MaxRes; //当前KCF响应值
SINT16 fDebug_KCF_CurThres; //当前KCF的阈值
SINT16 nDebug_KCF_BestScale; //当前最优尺度
SINT16 nDebug_Lost_Cnts; //丢失帧数计数
SINT16 nDebug_LK_CX; //LK中心点X位置
SINT16 nDebug_LK_CY; //LK中心点Y位置
SINT16 nDebug_LK_W; //LK跟踪宽度W
SINT16 nDebug_LK_H; //LK跟踪高度H
SINT16 nDebug_Recap_CX; //重捕区域中心X
SINT16 nDebug_Recap_CY; //重捕区域中心Y
SINT16 nDebug_Recap_W; //重捕区域宽度W
SINT16 nDebug_Recap_H; //重捕区域高度H
SINT16 nDebug_Recap_Cnts; //重捕帧数计数
SINT16 nDebug_Aim_Cnts; //捕获(定位)最准帧数
SINT16 nDebug_ObjDivison_CX; //目标分割中心点X
SINT16 nDebug_ObjDivison_CY; //目标分割中心点Y
SINT16 nDebug_ObjDivison_W; //目标分割中心点W
SINT16 nDebug_ObjDivison_H; //目标分割中心点H
SINT16 nDebug_SmallObjCnts; //小目标检测的个数
SINT16 nDebug_DimObjCnts; //弱小目标检测的个数
SINT16 nDebug_AreaObjCnts; //面目标检测的个数
SINT16 nDebug_MoveObjCnts; //运动目标检测的个数
SINT16 nDebug_AiObjCnts; //AI目标识别的个数
SINT16 nDebug_ObjCnts; //最终目标检测个数
UBYTE8 bDebug_LK_Success; //当前帧LK跟踪是否成功
UBYTE8 Reserved;
}TDllDebugInfoOutput;
//模拟目标信息
typedef struct tagSimulateOutput
{
UINT16 ubSimulateValid; //模拟类型0-不叠加模拟目标1-叠加模拟目标
//目标的参数
UINT16 nTargetPosX; //目标X坐标
UINT16 nTargetPosY; //目标Y坐标
UBYTE8 unTargetWidth; //目标宽度
UBYTE8 unTargetHeight; //目标高度
UINT16 unTargetGray; //目标灰度
} TSimulateOutput;
//Q_DECLARE_METATYPE(TSimulateOutput)
typedef struct ImgScalingPara
{
UINT16 usImageShowWidth; //显示图像宽度
UINT16 usImageShowHeight; //显示图像高度
UINT16 usScreenshotBeginX; //截图从X坐标开始
UINT16 usScreenshotBeginY; //截图从Y坐标开始
UINT16 usScreenshotWidth; //截图后的宽度
UINT16 usScreenshotHeight; //截图后的高度
UINT16 usScalingWidth; //缩放后的图像宽
UINT16 usScalingHeight; //缩放后的图像高
}TImgScalingPara;
//DSP跟踪结果参数行
typedef struct TagTrackResultInfo
{
TParaLineHeader tTrackResultHeader; //参数行头
UINT16 usDspCheckResult; //dsp自检结果
UINT16 resv1; //保留
TSoftVersionInfo tSoftVersionInfo; //软件版本信息
UINT16 usCoreRunTime[8]; //8个核算法运行时间
UINT16 usFiberInputPeroid[4]; //4路光纤输入帧频
UINT16 resv2[3]; //预留
UINT16 usVideoSrc; //视频源
UINT16 usResol; //像元角分辨率量化单位0.0001
UINT16 usFocus; //焦距
UINT16 usImgWidth; //输入图像宽
UINT16 usImgHeight; //输入图像高
UINT16 usProcessWidth; //算法处理图像宽
UINT16 usProcessHeight; //算法处理图像高
UBYTE8 ucProcessMode; //算法处理图像截取方式
UBYTE8 ucImgType; //红外图像像素类型
UINT16 ucProcessCenterInOrignImgX; //处理图像中心在原图上的X坐标
UINT16 ucProcessCenterInOrignImgY; //处理图像中心在原图上的Y坐标
TServoAndPosInfoOutput tServoAndPosInfo; //伺服及定位定向信息
TLaserInfoOutput tLaerInfo; //激光测距信息
TOutVectoringInfoOutput tOutVectoringInfo; //外引导信息
UBYTE8 ucSysMode; //系统模式
UBYTE8 ucWorkScence; //跟踪场景类型
UBYTE8 ucWorkMode; //工作模式
UBYTE8 ucCursorShowFlag; //光标显示或消隐
UINT16 usCursorX; //光轴x坐标
UINT16 usCursorY; //光轴y坐标
SINT16 ssDeltX; //跟踪/检测目标1方位取差量量化单位360/65535
SINT16 ssDeltY; //跟踪/检测目标1俯仰取差量量化单位360/65535
UBYTE8 ucObjDetectCnt; //单帧检测到的目标总个数
UBYTE8 ucObjTrackerCnt; //单帧跟踪到的目标总个数
UBYTE8 ucTrackerArithType; //目标跟踪算法标识
UBYTE8 ucObjDetectArithType; //目标检测算法标识
UBYTE8 ucReDetectArithType; //重捕算法标识
UBYTE8 Reserved3;
UBYTE8 ucReCorrectFlag; //二次修正标志
UBYTE8 Reserved4;
TTrackerObjectOutput tTrackerObjectInfo[10]; //跟踪目标信息,提取叠框使用
TDetectObjectOutput tDetectObjectInfo[20]; //检测目标信息
TDllDebugInfoOutput tDllDebugInfo; //界面显示测试信息
TSimulateOutput tSimulateObjInfo[5]; //模拟目标信息
UINT16 Reserved5[288]; //目标跟踪结果
UINT16 Reserved6;
UINT16 TrackerXor;
UINT16 Reserved7[360]; //算法参数
UINT16 nObjCntPerFrame; //单帧目标检测结果
UINT16 Reserved8[919]; //单帧目标检测结果
UINT16 nObjCntInPipe; //管道目标个数
UINT16 Reserved9[1801]; //管道结果
TImgScalingPara tImgScalingPara;
UINT16 Reserved10[105]; //113
TParaLineTail tTrackResultTail; //帧尾
}TTrackResultInfo;
/***************************************/
typedef struct tagTargetObjectHistory
{
SINT16 pnMaxPos_X; //目标的极大值位置(小目标检测用) //BYTES: 2*2=4
SINT16 pnMaxPos_Y;
SINT16 snSizeW; //目标的极大值位置(小目标检测用) //BYTES: 2*2=4
SINT16 snSizeH;
SINT16 afAnglefAz;
SINT16 afAnglefPt;
SINT16 FrameID;
}TARGET_OBJECT_History;
typedef struct tagTargetObjectOutput
{
// 全局
UBYTE8 nObjTypeGray;
UBYTE8 Reserved0;
UBYTE8 ObJType;
UBYTE8 UBYTE8Confidence;
UINT16 pxObjGray;
SINT16 pnMaxPos_X; //目标的极大值位置(小目标检测用) //BYTES: 2*2=4
SINT16 pnMaxPos_Y;
SINT16 snSizeW; //目标的极大值位置(小目标检测用) //BYTES: 2*2=4
SINT16 snSizeH;
SINT16 pfCenPosX;
SINT16 pfCenPosY;
SINT16 afAnglefAz;
SINT16 afAnglefPt;
SINT16 fSNR;
float tgEntropy;
float bgEntropy;
SINT16 Reserved1;
SINT16 Xor;
}TARGET_OBJECT_OUTPUT;
//定义管道结构体
typedef struct tagPipeOutput //BYTES: 6*1 + 14*4 + 57*10 + 36 = 668
{
UBYTE8 bOccupy_bTarget_bInsideFOV_bLost; //标识管道是否已经被占用
UBYTE8 Reserved0; //标识管道是否是目标
UBYTE8 fConfidence; //标记管道是否属于当前视场(目标检测区域)
UBYTE8 bAlarm; //管道消失标记0-不是1-是。
UINT16 unExistCnt; //管道中目标在其视场内真实被检测到的次数
UINT16 unLostCnt; //管道已消失(目标在其视场内没有被检测到)的帧计数器
UINT16 ptCurrentPntX;
UINT16 ptCurrentPntY;
UINT16 ObjectFilter_pfCenPosX;
UINT16 ObjectFilter_pfCenPosY;
UINT16 ObjectFilter_sfSizeW;
UINT16 ObjectFilter_sfSizeH;
SINT16 sfSpeed_vx;
SINT16 sfSpeed_vy;
SINT16 sfAglSpeed_vx;
SINT16 sfAglSpeed_vy;
UBYTE8 nPipeType;
UBYTE8 ubEnd;
TARGET_OBJECT_History objHistoryList[10];
UINT16 Reserved1[5];
}PIPE_Output;
/************************************************************************************/
//周扫告警信息参数行
typedef struct TagIntermittentScanInfo
{
TParaLineHeader tIntermitScanHeader; //参数行头
UINT16 usAddChangeTargetNum; //新增及变化目标个数
UINT16 usNeedDeleteTargetNun; //待删除目标个数
UINT16 usLostTargetNum; //丢失目标个数
UINT16 usNeedDeleteTargetIndex; //待删除目标序号
UINT16 usLostTargetIndex; //丢失目标序号
UINT16 resv1[6400]; //告警目标信息
UINT16 resv2[315];
TParaLineTail TIntermitScanTail; //帧尾
}TIntermitScanInfo;
//光标颜色及类型
typedef struct TagObjColorType
{
char color: 4;
char type: 4;
}TObjColorType;
//跟踪检测框信息
typedef struct TagTrackerDetectFrameInfo
{
TObjColorType stFrameColorType;
UBYTE8 ucFrameShowFlag;
UINT16 usFrameX;
UINT16 usFrameY;
UINT16 usFrameW;
UINT16 usFrameH;
UINT16 usSquareFrameLen; //四角框实线长度
}TTrackerDetectFrameInfo;
//字符块配置信息
typedef struct TagCharacterInfo
{
TObjColorType stCharacterColorType;
UBYTE8 ucCharacterShowFlag;
UINT16 usCharacterBeginX;
UINT16 usCharacterBeginY;
UINT16 usValidPixelX;
UINT16 usValidPixelY;
UINT16 usCharacterContentPos;
UINT16 usCharacterBlockLens;
}TCharacterInfo;
//界面叠加结果
typedef struct TagFrameOverlapOutput
{
TParaLineHeader stFrameOverlapHeader; //字符叠加参数行帧头
UINT16 resv[2]; //预留
UINT16 usImageShowWidth; //显示图像宽度
UINT16 usImageShowHeight; //显示图像高度
UINT16 usScreenshotBeginX; //截图从X坐标开始
UINT16 usScreenshotBeginY; //截图从Y坐标开始
UINT16 usScreenshotWidth; //截图后的宽度
UINT16 usScreenshotHeight; //截图后的高度
UINT16 usScalingWidth; //缩放图像的宽度
UINT16 usScalingHeight; //缩放图像的高度
UINT16 usScalingBeginLine; //缩放图像从哪一行开始
TObjColorType stCursorColorType; //光标颜色及类型
UBYTE8 ucCursorShowFlag; //光标显示开关
UINT16 usCursorX; //十字光标X坐标
UINT16 usCursorY; //十字光标Y坐标
UBYTE8 usCursorHeight; //十字光标高度
UBYTE8 usCursorWidth; //十字光标宽度
UINT16 resv1; //预留
TTrackerDetectFrameInfo stFrameInfo[30]; //跟踪检测框信息
UINT16 resv2[114]; //预留
TCharacterInfo stCharacterInfo[40]; //字符块信息
UINT16 resv3[40];
UINT16 usCharacterContent[12155];
TParaLineTail TFrameOverlapTail;
}TFrameOverlapOutput;
typedef struct TagTurbulenceOutput
{
UINT16 usHeaderTag[4]; //固定头
UINT16 usValid; //0-无效 1-有效
UINT16 usImageWidth; //原始图像宽
// UINT16 usImageHeight; //原始图像高
UINT16 usScreenshotBeginX; //湍流图像坐标X
UINT16 usScreenshotBeginY; //湍流图像坐标Y
UINT16 usImage[10000]; //去湍流后图像
UINT16 resv1[2787]; //预留
TParaLineTail TFrameOverlapTail;
}TTurbulenceOutput;
/**************************************************************************************/
//网络数据头信息
typedef struct TagTNetHeader
{
UINT16 usHeaderTag; //帧头
UINT16 usCmdWord; //命令字
UINT32 uiNetDataLen; //数据长度
UINT32 uiFrameNum; //帧编号
}TNetHeader;
typedef struct TagAIInfo
{
UBYTE8 ucTagStyle; //目标类型
float ucTagConfidence; //目标置信度
UINT16 usTagPosX; //目标X坐标
UINT16 usTagPosY; //目标Y坐标
UINT16 usTagWidth; //目标宽
UINT16 usTagHeight; //目标高
}TAIInfo;
typedef struct tagRectF //BYTES: 4*4=16
{
float x; //中心点点x坐标
float y; //中心点点y坐标
float w; //矩形宽度
float h; //矩形高度
}FRECT;
typedef struct ARMStatus//4byte
{
UBYTE8 ucSpeed; //传播速率 02M 14M
UBYTE8 ucPicChn; //画中画主视频通道 0关闭 1短波红外 2红外 3可见光
UBYTE8 ucPipView; //画中画子视频通道 0无效 1局部 2全图
UBYTE8 icPicture; //拍照状态 0空闲 1存储中
}TARMStatus;
//ARM AI结果网络协议
typedef struct TagAIResultNetInfo
{
TNetHeader tAIResultNetHeader; //数据头信息12
UINT16 usTagNum; //AI目标个数2
UINT16 usTrackStatus; //状态信息2
/*******************16byte***********************/
//0号目标放跟踪结果——1-49为识别目标结果
TAIInfo stTagAIInfo[50]; //AI目标结果信息
/************************************************/
TARMStatus stTagArmStatus; //ARM状态4
//******AI跟踪高得分检测结果*******
UINT32 nDetectNum;
UINT32 nClusterNum;
FRECT nSimilarArray[50];
float ServoAz;
float ServoPt;
UBYTE8 ucXOR; //校验1
UBYTE8 ucAIResultTail; //帧尾1
/*******************6byte************************/
}TAIResultNetInfo;
//通过rio向FPGA传输的参数
typedef struct TagParaWriteBacktoFpga
{
UINT16 resv[640]; //IR参数行
TContrCmdInfo stContrCmdInfo; //控制命令参数行地址
TAIResultInfo stAIResultInfo; //AI结果参数行
TTrackResultInfo stTrackResultInfo; //DSP跟踪结果
UINT16 resv1[11*640]; //DSP周扫告警结果
TFrameOverlapOutput stFrameOverlapOutput; //字符叠加结果
TTurbulenceOutput stTurbulenceOutput;
}TParaWriteBackToFpga;
}
#endif // _CommDef_H_