face_det_ai_engine.h 1.73 KB
#ifndef _FACE_DET_AI_ENGINE_
#define _FACE_DET_AI_ENGINE_
#include "stl_aiplatform_header.h"

#include "face_detect.h"
#include "./sort/Sort.h"
#include "../ai_platform/task_param_manager.h"

using namespace std;


typedef struct facedet_ai_engine_param
{
	//int min_recg_frame_counts;
	fd_param sdk_param;
} facedet_ai_engine_param;

#ifndef _TASK_TRACKER_
#define _TASK_TRACKER_
struct task_tracker
{
	std::string task_id;
	int fusion_interval;//跳帧数
	//tracker *trk;;
	Sort tracker;
};
#endif

class face_det_ai_engine/*: public base_ai_engine*/
{
private:
	//int cur_batchsize;
	//person_det_algorthim_cache * _cache;
	void* handle;
	int best_batchsize;
	int max_batchsize;
	unsigned int skips;
	map<std::string, unsigned long long> id_frame_count;
	unsigned long long frame_count;
	bool is_open = false;
public:
	std::map<std::string, task_tracker> task_trackers;
	//std::vector<sy_img > _cut_data_array;
	std::map<std::string, std::vector<fd_result>> _fd_result;

	task_param_manager *task_param_manager_;
public:
	~face_det_ai_engine();
	int init_ai_engine(const facedet_ai_engine_param &ai_param/*, person_det_algorthim_cache * cache*/);
	int ai_engine_process_batch(sy_img *image_data_array, const int &image_size, std::set<std::string> &task_ids, /*const int &best_batchsize, float* pose_thresld,*/ std::vector<onelevel_det_result> &result, std::vector<std::vector<int>> &deleteObjectID);
	int ai_engine_process_batch2(std::vector<std::string> &task_ids, sy_img *image_data_array, const int &image_size, std::vector<onelevel_det_result> &result
								, std::vector<std::vector<int>> &deleteObjectID);
	void finish_task(std::string task_id);
	void operator_tracker(std::string task_id, const int &oper, int m_fusion_interval);
	void clear();
};

#endif