#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; //传播速率 0:2M 1:4M 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_