#pragma once //#include "CameraParams.h" #define PXIEL_FORMAT_FLOAT32 0x81200001 //flaot32像素格式 #define TEMP_REGION_COUNT 22 //全部区域个数 #define TEMP_MAX_POINT_NUM 10 //点区域做多个数 #define TEMP_MAX_POLY_NUM 10 //多边形区域做多个数 #define TEMP_MAX_LINE_NUM 1 //线区域做多个数 #define TEMP_MAX_CIRCLE_NUM 1 //圆区域做多个数 #define TEMP_MAX_POLY_LINE_COUNT 20 //多边形区域边的最大个数 #define TEMP_MAX_MULTI_ALARM_COUNT 4 //多区域报警可配置的组数 #define TEMP_MAX_DISPLAY_WINDOW_COUNT 5 //显示设置窗口可配置的组数 #define TEMP_CHUNK_ID_TEST 0x00510002 //测温区域信息 #define TEMP_CHUNK_ID_ALARM 0x00510003 //测温警告信息 #define TEMP_CHUNK_ID_RAW_DATA 0x00510004 //全屏灰度数据 #define TEMP_CHUNK_ID_FULL_SCREEN_DATA 0x00510005 //全屏温度数据 #define TEMP_CHUNK_ID_MIN_MAX_TEMP 0x00510006 //最低温最高温 #define TEMP_CHUNK_ID_OSD_INFO 0x00510007 //OSD相关参数 #define TEMP_ROI_TYPE_POINT 0 #define TEMP_ROI_TYPE_LINE 1 #define TEMP_ROI_TYPE_POLYGON 2 #define TEMP_ROI_TYPE_CIRCLE 3 #define TEMP_ALARM_LEVER_PRE 0 //报警等级-预警 #define TEMP_ALARM_LEVER_WARN 1 //报警等级-警告 #define TEMP_ALARM_LEVER_NORMAL 2 //报警等级-正常 #define TEMP_ALARM_LEVER_RECOVER 3 //报警等级-解除等级 #define TEMP_ALARM_TYPE_MAX 0 //报警类型-最大值 #define TEMP_ALARM_TYPE_MIN 1 //报警类型-最小值 #define TEMP_ALARM_TYPE_AVG 2 //报警类型-平均值 #define TEMP_ALARM_TYPE_DIFFER 3 //报警类型-差异值 #define OSD_BY_NONE 0 //OSD不显示 #define OSD_BY_CAMERA 1 //相机显示OSD #define OSD_BY_CLIENT 2 //软件层显示OSD //设置的ROI类型 enum ROIActionType { ROI_ACTION_TYPE_POINT = 0, //点 ROI_ACTION_TYPE_POLYGON, //多边形 ROI_ACTION_TYPE_LINE, //线 ROI_ACTION_TYPE_CIRCLE, //圆 ROI_ACTION_TYPE_UNDEFINE, }; //报警源 enum AlarmSourceType { ALARM_SOURCE_TYPE_MAX = 0, //最大温度 ALARM_SOURCE_TYPE_MIN, //最小温度 ALARM_SOURCE_TYPE_AVG, //平均温度 ALARM_SOURCE_TYPE_VAR, //温度差异 }; //报警条件 enum AlarmConditionType { ALARM_CONDITION_TYPE_MORE = 0, //大于 ALARM_CONDITION_TYPE_LESS, //小于 ALARM_CONDITION_TYPE_NONE, //无 }; typedef struct { unsigned char pointNum; // 点测温个数,最大10个 unsigned char boxNum; // 框测温个数,最大10个 unsigned char lineNum; // 线测温个数,最多1条 unsigned char circleNum; // 圆测温个数,最多1个 unsigned char total; // 上者之和 unsigned char res[3]; } IFR_TM_REGION_NUM; //点 typedef struct { int x; int y; } IFR_POINT; //多边形区域 typedef struct { unsigned int pointNum; //<多边形实际顶点数 unsigned int circleRadius; //<测温区域圆半径 IFR_POINT circlepoint; //<测温区域的圆心半径 IFR_POINT pointList[TEMP_REGION_COUNT]; //<顶点坐标 } IFR_POLYGON; //单个区域测温结果 typedef struct { unsigned char enable; ///<是否启用:0-否,1-是 unsigned char regionId; ///<区域ID unsigned char reserved[34]; ///<保留字段 unsigned int regiontype; ///<区域类型 0:点 1:线 2:多边形 3:圆 char name[32]; ///<区域名称 unsigned int emissionRate; ///<发射率: [1,100] int minTmp; ///<最低温度: [-400, 10000],单位0.1℃ int maxTmp; ///<最高温度: [-400, 10000],单位0.1℃ int avrTmp; ///<平均温度: [-400, 10000],单位0.1℃ int diffTmp; ///<温差: [0, 10400],单位0.1℃ IFR_POINT points[2]; ///<保存测试结果中的最高温和最低温坐标,归一化到0-1000,数组下标: 0-最高温,1-最低温 IFR_POLYGON polygon; ///<多边形区域 } IFR_OUTCOME_INFO; //温度结果列表 typedef struct { IFR_TM_REGION_NUM regionNum; ///<有效测温区域数量 unsigned char reserved[8]; ///<保留 IFR_OUTCOME_INFO ifrOutcome[TEMP_REGION_COUNT]; ///<测温结果 } IFR_OUTCOME_LIST; //报警上传信息结构体 typedef struct { unsigned char regionId; ///<框序号 unsigned char alarmkey; ///<当前区域报警是否开启开关,上层默认配置开启 unsigned char alarmRule; ///<规则:0-大于 1-小于 unsigned char reserved0; ///<预留 unsigned int regiontype; ///<区域类型 0:点 1:线 2:多边形 3:圆 unsigned int alarmType; ///<报警类型:0-最高温报警,1-最低温度,2-平均温度,3-温差 unsigned int alarmLevel; ///<报警级别:0-预警,1-报警,2-正常,3-解除预警 int measureTmpData; ///<测量值,单位0.1℃ int ruleTmpData; ///<规则设定值,单位0.1℃ IFR_POLYGON polygon; ///<区域位置 IFR_POINT points[2]; ///<保存测试结果中的最高温和最低温坐标,归一化到0-1000,数组下标: 0-最高温,1-最低温 unsigned char reserved1[16]; ///<预留 } IFR_ALARM_INFO; //区域温差报警上传信息结构体 typedef struct { unsigned char regionSet[2]; ///温差报警区域ID号,每对2个区域 unsigned char alarmkey; ///<当前区域报警是否开启开关 unsigned char reserved0; ///<预留 unsigned int alarmType; ///<报警类型:0-最高温报警,1-最低温度,2-平均温度,3-温差 unsigned char alarmRule; ///<规则:0-大于 1-小于 unsigned char reserved1[3]; unsigned int alarmLevel; ///<报警级别:0-预警,1-报警,2-正常,3-解除预警 int measureTmpData[2]; ///<温度报警区域测量值,单位0.1℃,与regionSet对应 int ruleTmpData; ///<规则设定值,单位0.1℃ unsigned char reserved2[4]; ///<预留 } IFR_DIFF_ALARM_INFO; typedef struct { IFR_ALARM_INFO alarmOutcome[TEMP_REGION_COUNT]; ///<单区域报警结果 IFR_DIFF_ALARM_INFO alarmDiffOutcome[4]; ///区域间温差报警结果 }IFR_ALARM_UPLOAD_INFO; //全屏温度信息 typedef struct { int nMaxTemp; int nMinTemp; unsigned char reserved[4]; } IFR_FULL_SCREEN_MAX_MIN_INFO; //测温区域显示规则 typedef struct { unsigned int regionDispIndex; /**< 区域显示规则索引号 */ unsigned int regionDispEnable; /**< 测温区域显示使能 */ unsigned int regionMaxTempDispEnable; /**< 区域最大温度显示使能 */ unsigned int regionMinTempDispEnable; /**< 区域最小温度显示使能 */ unsigned int regionAvgTempDispEnable; /**< 区域最小温度显示使能 */ unsigned int regionAlarmDispEnable; /**< 区域告警状态显示使能 */ } IRF_REGION_DISP_INFO; //区域测温图像叠加特征信息结构体 typedef struct { unsigned int legendDisplayEnable; /**< 图例(温度条)是否使能 1 使能 0 不使能 */ unsigned int osdProcessor; /**< 红外相机OSD叠加控制器选择 0 无叠加 1 相机叠加 2 客户端叠加 */ IRF_REGION_DISP_INFO regionDispRules[TEMP_REGION_COUNT]; } IRF_OSD_INFO;