face_det_ai_engine.h
1.41 KB
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