#pragma once #ifndef _GLOBAL_MACRO_H_ #define _GLOBAL_MACRO_H_ #include #include #include #include //////////////////////////////////////////////////////////////////////////////// //数据类型重命名 //////////////////////////////////////////////////////////////////////////////// typedef bool BBOOL; typedef unsigned char UBYTE8; //typedef char BYTE8; typedef unsigned short UINT16; typedef short SINT16; typedef unsigned int UINT32; typedef int SINT32; typedef unsigned long COLORREF; typedef unsigned short WORD; typedef unsigned long DWORD; typedef unsigned char BYTE; typedef float FLOAT32; typedef double DOUBLE64; typedef long double LDOUBLE80; typedef unsigned char PIXELTYPE_TV; //8位数据 typedef unsigned char PIXELTYPE_RGB; //8位数据 #if 0 typedef unsigned short PIXELTYPE; //16位wu符号数据 #endif typedef short PIXELTYPE_Y; //16位符号数据 typedef SINT32 PIXELDISP; typedef short POS16S; typedef float POS32F; typedef short WH16S; typedef float WH32F; // typedef bool BOOL; //////////////////////////////////////////////////////////////////////////////// //--宏定义 //////////////////////////////////////////////////////////////////////////////// //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //全局使用 #define TRUE 1 //真1 #define FALSE 0 //假0 #define PI 3.14159265f //圆周率 #define EPSILON 0.0001f //浮点数精度 // #define MIN(a, b) ((a) < (b) ? (a) : (b)) //取a、b两者中的最小值 // #define MAX(a, b) ((a) > (b) ? (a) : (b)) //取a、b两者中的最大值 #define MINMAX_VAR(a, b, c) MAX(MIN(b, c), MIN(a, MAX(b, c))) //取a、b、c三者中位于中间大小的值,即非最大值亦非最小值 #define MINMAX_NUM(a, b, c) MAX(b, MIN(a, c)) //当b<=c时,将a限制在b和C之间;当b>c时,取b //#define ABS(x) ((x) < 0 ? -(x) : (x)) //取x的绝对值 #define ROUND(x) ((SINT32)((x) - ((x)>=0?0:1) + 0.5f)) //取整 - 对x四舍五入取整 #define FLOOR(a) (SINT32)(a) //取整 - 小数位截断 #define WIDTHBITS(width) ((width * 24 + 31) / 32 * 4) //PC平台中,求图像每行的bit数 //#define WIDTHBITS(width) ((SINT32)(width / 4) + 1) //DSP平台中,求图像每行的bit数(=有效图像宽度/4+1,因为四个像素一个32位,两边增加了4个黑点) // #define RGB(r, g, b) ((COLORREF)(((BYTE)(r)|((WORD)((BYTE)(g))<<8))|(((DWORD)(BYTE)(b))<<16))) //设置RGB颜色值 #define GetRVALUE(rgb) ((SINT32)(rgb)) //取RGB颜色值中r通道值 #define PI2 6.2831853f //2*pi #define GLB_IMG_WIDTH_TV 1920 #define GLB_IMG_HEIGHT_TV 1280 #define GLB_IMG_WIDTH_IR 1280 #define GLB_IMG_HEIGHT_IR 1024 #define DETECT_MAX_NUM 5 #define DYT_STATUS_TURNONINIT 0 //DYT上电初始化/退出跟踪初始化 #define DYT_STATUS_SEARCH 1 //DYT搜索阶段 #define DYT_STATUS_STARE 2 //DYT初次截获锁定,跟踪器初始化 #define DYT_STATUS_TRACK 3 //DYT跟踪阶段 #define DYT_STATUS_LOST 4 //DYT跟踪丢失阶段 #define DYT_STATUS_RESTARE 5 //DYT十字光标锁定截获 #define DYT_STATUS_MEMORY 6 //DYT记忆跟踪阶段 #define DYT_STATUS_BLINDLOST 7 //DYT盲区丢失阶段 #define DYT_STATUS_STABILIZE 8 //DYT稳像阶段(二次截获状态) #define DYT_STATUS_VSTRACK 9 //DYT跟踪器指向阶段 #define DYT_STATUS_LOCKMOVE 10 //DYT拖动状态 #define TRACK_CLEAR 0 //清零指令 #define TRACK_INIT 1 //初始化指令 #define TRACK_TRACK 2 //跟踪指令 #define MANMADEMODE_BRFOREPK 11 //人工截获,射前给宽高中心点 #define MANMADEMODE_AFTERPK 12 //人工截获,射后给中心点位置 #define MANMADEMODE_SUSTARGET 13 //手动截获模式,疑似目标通过按键锁定(射前射后一样流程,合并) #define CATCHMODE_INIT 0 //截获方式初始化 #define CATCHMODE_AI 1 //AI识别截获 #define CATCHMODE_TEMPLET 2 //模板匹配截获 #define CATCHMODE_MOTION 3 //运动目标检测截获 #define CATCHMODE_AIPLUSMOTION 4 //AI+运动目标检测截获 #define CATCHMODE_LASER 5 //激光锁定 #define CATCHMODE_AIPLUSLASER 6 //AI+激光复合模式,激光信息引导分选截获 #define CATCHMODE_TEMPLETPLUSLASER 7 //匹配+激光复合模式,激光信息引导分选截获 #define CATCHMODE_MOTIONPLUSLASER 8 //运动目标+激光复合模式,激光信息引导分选截获 #define CATCHMODE_NON 9 //解锁 #define CATCHMODE_WAIT 10 //等待状态 #define CONFIRM_TRACKS 5//确认模块存储结果最大数量 #define KCF_Track 1 //KCF跟踪算法标志量 #define Other_Track 2 //其他跟踪算法标志量 #if 0 //定义目标宽高结构体--浮点型 typedef struct tagSize32F //BYTES: 3*4=12 { FLOAT32 w; //宽度 FLOAT32 h; //高度 FLOAT32 s; //面积 }SIZE32F; ////定义距离结构体--浮点型 //typedef struct tagDist32F //BYTES: 2*4=8 //{ // FLOAT32 dx; //x方向距离 // FLOAT32 dy; //y方向距离 //}DIST32F; typedef struct tagPOINT16S { SINT16 x; //图像像素x坐标 SINT16 y; //图像像素y坐标 }POINT16S; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //定义矩形结构体--中心点坐标及宽高、大小-整型32位 typedef struct tagCENTERRECT32S //BYTES: 4*4=16 { SINT32 cx; //中心点x坐标 SINT32 cy; //中心点y坐标 SINT32 w; //矩形宽度 SINT32 h; //矩形高度 }CENTERRECT32S; //定义矩形结构体--中心点坐标及宽高、大小-浮点型 typedef struct tagCENTERRECT32F //BYTES: 4*4=16 { FLOAT32 cx; //中心点x坐标 FLOAT32 cy; //中心点y坐标 FLOAT32 w; //矩形宽度 FLOAT32 h; //矩形高度 }CENTERRECT32F; //定义矩形结构体--左上角及右下角坐标-浮点型 typedef struct tagMINMAXRECT32F //BYTES: 4*4=16 { FLOAT32 minX; //左上点x坐标 FLOAT32 minY; //左上点y坐标 FLOAT32 maxX; //右下点x坐标 FLOAT32 maxY; //右下点y坐标 }MINMAXRECT32F; //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ //仿射变换参数 struct WarpsPara{ FLOAT32 angle; FLOAT32 scale; FLOAT32 shift; FLOAT32 noise; SINT32 num_closest; SINT32 num_warps; }; typedef struct tagMINMAXRECT { SINT32 maxX; //左上点 SINT32 maxY; SINT32 minX; SINT32 minY; }MINMAXRECT; #endif //定义目标宽高结构体--16位 //BYTES: 2*2 + 1*4=8 typedef struct tagSize16S { SINT16 w; //宽度 SINT16 h; //高度 SINT32 s; //面积 }SIZE16S; //定义目标宽高结构体--32位 //BYTES: 3*4=12 typedef struct tagSize32S { SINT32 w; //宽度 SINT32 h; //高度 SINT32 s; //面积 }SIZE32S; //定义矩形结构体--左上角坐标及宽高--整型32位 typedef struct tagRect32S //BYTES: 4*4=16 { SINT32 x; //左上点x坐标 SINT32 y; //左上点y坐标 SINT32 w; //矩形宽度 SINT32 h; //矩形高度 SINT32 iFrameIdx; }RECT32S; //定义矩形结构体--左上角坐标及宽高--浮点型 typedef struct tagRect32F //BYTES: 4*4=16 { FLOAT32 x; //左上点x坐标 FLOAT32 y; //左上点y坐标 FLOAT32 w; //矩形宽度 FLOAT32 h; //矩形高度 FLOAT32 cx; FLOAT32 cy; SINT32 iFrameIdx; }RECT32F; //定义坐标结构体--整型32位 //BYTES: 2*4=8 typedef struct tagPoint32S { SINT32 x; //图像像素x坐标 SINT32 y; //图像像素y坐标 }POINT32S; //定义坐标结构体--浮点型 typedef struct tagPoint32F //BYTES: 2*4=8 { FLOAT32 x; //图像像素x坐标 FLOAT32 y; //图像像素y坐标 }POINT32F; // kcf参数结构体 typedef struct tagKcfPara // 16 + 4*19 = 92B { RECT32F rfBox; //跟踪框 FLOAT32 lamda; //正则项 FLOAT32 padding; //区域扩展系数 FLOAT32 output_sigma_factor; // FLOAT32 interp_factor; //更新系数 FLOAT32 scale_step; //尺度因子 SINT32 template_size; //模板尺寸 SINT32 cell_size; //hog cell size FLOAT32 scale; //跟踪框与tempsize的比例 SIZE32S tempsize; SINT32 cellnumX; //tempsize对应的cell数 SINT32 cellnumY; SINT32 featureSizeX; //特征数组宽 SINT32 featureSizeY; //特征数组高 SINT32 featureSizeZ; //特征数组通道数 SINT32 fftSizeX; //fft变换尺寸,2幂次方 SINT32 fftSizeY; BBOOL b_kcfTerminator;//true表示无梯度 }KcfPara; typedef struct { FLOAT32 SNR; FLOAT32 fCendist; RECT32S areaRect; FLOAT32 fScore; BBOOL isBright; FLOAT32 fGradMeanX; FLOAT32 fGradMeanY; PIXELTYPE_TV g_bCandiSegBin[40000]; FLOAT32 ObjMean; FLOAT32 BackgroundMean; UINT16 iExistCnt; }CANDITARINFO; //定义矩形结构体--左上角及右下角坐标-整型32位 typedef struct tagMINMAXRECT32S //BYTES: 4*4=16 { SINT32 minX; //左上点x坐标 SINT32 minY; //左上点y坐标 SINT32 maxX; //右下点x坐标 SINT32 maxY; //右下点y坐标 }MINMAXRECT32S; typedef struct { RECT32S tararea; UINT32 unObjPxlsCnt; //目标的象素点的个数 FLOAT32 diff_W; FLOAT32 diff_H; FLOAT32 diff_WH; FLOAT32 Value; FLOAT32 snr; POINT32F centerpoint; FLOAT32 centerdis; MINMAXRECT32S mrnRect; //目标上下左右边界坐标 SIZE16S snSize; //目标宽高 FLOAT32 ObjMean;//目标均值 FLOAT32 BackgroundMean;//目标均值 FLOAT32 fObjGradMean;//目标边缘梯度均值 FLOAT32 Euc;//目标离锁定的点的距离 FLOAT32 ObjBkCon;//目标背景差 FLOAT32 contrast[4];//目标四个方向对比度 FLOAT32 SNR; BBOOL isBright;//目标亮暗判断 BBOOL AloneFlag;//Ŀ���������ж��Ƿ���� BBOOL isTarGetFlag; UBYTE8 ubMaxSaliency; FLOAT32 grad4Neibor[2];//���������ĸ�����ı�Ե��ȡ yy20200430 }TARINFORMATION; #endif