|
|
|
|
|
|
|
|
|
|
|
/*********版权所有(C)2020,武汉高德红外股份有限公司***************************************
|
|
|
|
|
|
* 文件名称: Arith_Detector.h
|
|
|
|
|
|
* 文件标识:
|
|
|
|
|
|
* 内容摘要: 检测器接口,根据项目情况实现,多个检测算法工作时注意检测结果的去重
|
|
|
|
|
|
* 其它说明: 外部尽量不要跨过 Arith_Detect模块对具体检测算法进行设置和调用,保持良好封装性
|
|
|
|
|
|
* 当前版本:
|
|
|
|
|
|
* 创建作者:04046WCW
|
|
|
|
|
|
* 创建日期:2020/03/05
|
|
|
|
|
|
* 包含关系:
|
|
|
|
|
|
*****************************************************************************************/
|
|
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
|
|
|
|
#include "Arith_Common.hpp"
|
|
|
|
|
|
#include "Detect/API_DetectSAObj.h"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//// 定义检测器最大检测个数
|
|
|
|
|
|
//#define DT_TARGET_MAX_NUM 100
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 检测器
|
|
|
|
|
|
class Detectors
|
|
|
|
|
|
{
|
|
|
|
|
|
public:
|
|
|
|
|
|
Detectors(SINT32 nWidth, SINT32 nHeight, CENTERRECT mmCenterRect);
|
|
|
|
|
|
Detectors(SINT32 nWidth, SINT32 nHeight);
|
|
|
|
|
|
|
|
|
|
|
|
virtual ~Detectors();
|
|
|
|
|
|
|
|
|
|
|
|
public:
|
|
|
|
|
|
|
|
|
|
|
|
// 检测器初始化
|
|
|
|
|
|
BBOOL Init(SINT32 nWidth, SINT32 nHeight, CENTERRECT mmCenterRect);
|
|
|
|
|
|
|
|
|
|
|
|
// 执行目标检测算法
|
|
|
|
|
|
SINT32 Detect(GD_VIDEO_FRAME_S img, CENTERRECT mmCenterRect);
|
|
|
|
|
|
|
|
|
|
|
|
// 执行目标检测算法
|
|
|
|
|
|
SINT32 Detect(GD_VIDEO_FRAME_S img);
|
|
|
|
|
|
|
|
|
|
|
|
// 导入外部目标列表
|
|
|
|
|
|
SINT32 ImportExternTargets(TARGET_OBJECT* pTargetList, SINT32 nNum);
|
|
|
|
|
|
|
|
|
|
|
|
// 清除目标列表
|
|
|
|
|
|
void ClearTargetsArray();
|
|
|
|
|
|
|
|
|
|
|
|
// 检测器参数设置
|
|
|
|
|
|
void SetParam(Param_SkyDetect para);
|
|
|
|
|
|
|
|
|
|
|
|
// 返回参数设置
|
|
|
|
|
|
Param_SkyDetect GetParam();
|
|
|
|
|
|
|
|
|
|
|
|
// 获取目标检测队列
|
|
|
|
|
|
TARGET_OBJECT* GetTargetArray();
|
|
|
|
|
|
|
|
|
|
|
|
// 根据RECT剔除目标,标记false
|
|
|
|
|
|
void RemoveLabelTarget(RECT32S box);
|
|
|
|
|
|
|
|
|
|
|
|
// 输出小目标检测的极值点
|
|
|
|
|
|
POINT16S* GetDST_MaxPoint();
|
|
|
|
|
|
|
|
|
|
|
|
// 当前帧目标检测个数
|
|
|
|
|
|
SINT32 m_FrmObjsCnt;
|
|
|
|
|
|
|
|
|
|
|
|
//参数
|
|
|
|
|
|
public:
|
|
|
|
|
|
Param_SkyDetect mDetPara;
|
|
|
|
|
|
|
|
|
|
|
|
// 小目标检测算法
|
|
|
|
|
|
API_DetectSmallObj* pDST_Module;
|
|
|
|
|
|
|
|
|
|
|
|
// 面目标检测算法
|
|
|
|
|
|
API_DetectAreaObj* pDAT_Module;
|
|
|
|
|
|
|
|
|
|
|
|
private:
|
|
|
|
|
|
|
|
|
|
|
|
GLB_STATUS nSysStatus;
|
|
|
|
|
|
|
|
|
|
|
|
// 目标检测队列
|
|
|
|
|
|
TARGET_OBJECT* m_Target_Array;
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SINT16 MergeSmallAndAreaTarget(TARGET_OBJECT* ptTargetArray, SINT32 nSmallObjsCnt, SINT32 nAreaObjsCnt,SINT32 nCombineDist,GLB_STATUS nSysStatus);
|
|
|
|
|
|
|
|
|
|
|
|
void Sort_TargetArray(TARGET_OBJECT* ptTargetArray, SINT32 nObjsNum, FLOAT32 DetectCenterX, FLOAT32 DetectCenterY);
|
|
|
|
|
|
|
|
|
|
|
|
/*************************************
|
|
|
|
|
|
* Method: MergeAIAndSATarget()
|
|
|
|
|
|
* Function Description: 对现有检测数组中的目标进行合并
|
|
|
|
|
|
* CreateData: 2024/10/11
|
|
|
|
|
|
* Input Param: TARGET_OBJECT * ptTargetArray:需要合并的检测数组
|
|
|
|
|
|
* Input Param: SINT32 nObjsCnt:检测数组中的目标个数
|
|
|
|
|
|
* Output Param:
|
|
|
|
|
|
* Return: SINT32:合并后的目标个数
|
|
|
|
|
|
* Call Relation:
|
|
|
|
|
|
* Other Description:
|
|
|
|
|
|
*************************************/
|
|
|
|
|
|
SINT32 MergeAIAndSATarget(TARGET_OBJECT* ptTargetArray,SINT32 nTotalCnt);
|