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

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.

#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_