Blame view

src/ai_engine_module/face_det_ai_engine.h 1.41 KB
09c2d08c   Hu Chunming   arm交付版
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
  #ifndef _FACE_DET_AI_ENGINE_
  #define _FACE_DET_AI_ENGINE_
  
  #include "face_detect.h"
  #include "./sort/Sort.h"
  #include "../ai_platform/task_param_manager.h"
  #include "../ai_platform/det_obj_header.h"
  
  #include "acl/acl.h"
  #include "acl/ops/acl_dvpp.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*/
  {	
  public:
  	face_det_ai_engine();
  	~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(std::vector<std::string> &task_ids, sy_img *image_data_array, std::vector<onelevel_det_result> &result
  								, std::vector<std::vector<int>> &deleteObjectID);
  	void finish_task(std::string task_id);
  	void add_tracker(std::string task_id, int fusion_interval);
  	void clear();
  
  private:
  	//int cur_batchsize;
  	//person_det_algorthim_cache * _cache;
  	void* handle;
  	int m_max_batchsize;
  
  	int m_devId;
  	aclrtContext m_algorthim_ctx;
  
  	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_;
  };
  
  #endif