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.

329 lines
11 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.

#pragma once
#ifndef _GLOBAL_MACRO_H_
#define _GLOBAL_MACRO_H_
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
////////////////////////////////////////////////////////////////////////////////
//数据类型重命名
////////////////////////////////////////////////////////////////////////////////
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;//Ŀ<><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ж<EFBFBD><D0B6>Ƿ<EFBFBD><C7B7><EFBFBD><EFBFBD>
BBOOL isTarGetFlag;
UBYTE8 ubMaxSaliency;
FLOAT32 grad4Neibor[2];//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD>Ե<EFBFBD><D4B5>ȡ yy20200430
}TARINFORMATION;
#endif