Blame view

src/ai_platform/MultiSourceProcess.h 4.66 KB
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
1
2
3
4
5
6
7
  #include "header.h"
  #include "acl/acl.h"
  #include "acl/ops/acl_dvpp.h"
  #include "task_param_manager.h"
  #include "../ai_engine_module/VPTProcess.h"
  #include "../reprocessing_module/snapshot_reprocessing.h"
  #include "../reprocessing_module/save_snapshot_reprocessing.h"
9fc79d43   Hu Chunming   同步代码初步跑通
8
  #include "../ai_engine_module/ai_engine_module.h"
9b4d4adf   Hu Chunming   添加定时抓拍;
9
  #include "../util/JpegUtil.h"
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
10
11
12
13
14
15
16
  
  #include <map>
  #include <mutex>
  #include <thread>
  #include <list>
  #include <vector>
  #include <deque>
571e8ac8   Hu Chunming   完成轨迹定时抓拍
17
  #include <set>
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
18
  
9fc79d43   Hu Chunming   同步代码初步跑通
19
20
21
22
  #ifdef POST_USE_RABBITMQ
  #include "../reprocessing_module/mq_manager.hpp"
  #endif
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
  
  using namespace std;
  
  class DeviceMemory;
  
  class CMultiSourceProcess {
  public:
    CMultiSourceProcess();
    ~CMultiSourceProcess();
  
    int InitAlgorthim(tsl_aiplatform_param vptParam);
    bool AddTask(task_param _cur_task_param);
    bool PauseTask(const string taskID);
    bool RestartTask(const string taskID);
    bool FinishTask(const string taskID);
    void CloseAllTask();
    int SnapShot(task_param param);
  
  #ifdef POST_USE_RABBITMQ
    int AddMqConn(mq_type_t mq_type, rabbitmq_conn_params_t mq_conn_param);
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
43
44
  #endif
  
9fc79d43   Hu Chunming   同步代码初步跑通
45
46
47
48
49
    int GetTaskStatus(const string taskID);
  
    int CountRunningTask();
    void CloseAllTask2();
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
50
51
52
53
  public:
    int algorthim_process_thread();  // 算法处理线程
    void task_finished(const string task_id);
    void decoded_cbk(DeviceMemory* devFrame);
9b4d4adf   Hu Chunming   添加定时抓拍;
54
    void timing_snapshot_thread();
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
55
56
57
58
  
  private:
    // 算法相关
    int algorthim_vpt(vector<DeviceMemory*> vec_gpuMem);
fce4580d   Hu Chunming   更新最新代码:修改解码器实现方式并...
59
60
61
62
63
    // 逆行
    void algorthim_retrograde(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, vector<onelevel_det_result>& vptResult);
    // 闯入
    void algorthim_trespass(vector<string>& vpt_interest_task_id, vector<DeviceMemory*> vpt_interest_imgs, 
                                                    vector<onelevel_det_result>& vptResult ,vector<vector<int>>& deleteObjectID);  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
64
65
66
67
68
69
70
71
  
  private:
    // 工具处理函数
    bool task_has_vpt_algor(const std::string &task_id);
    void clear_finished_task();
    bool finish_task(const string taskID, const bool delete_snapshot);
    int algorithm_vehicle_relult(vector<DeviceMemory*> vec_devMem, vector<onelevel_det_result>& vptResult, vector<vector<int>>& delete_object_id);
    void send_locus_finished_msg(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
d7bafd67   Hu Chunming   添加最优快照截取模式
72
73
74
    void vehicle_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
    void vehicle_locus_finished(const OBJ_KEY obj_key);
  
29b64a88   Hu Chunming   添加行人逆行算法
75
76
77
    bool save_snapshot_process(const OBJ_KEY &obj_key, const algorithm_type_t &algorithm_type, vpc_img_info img_info,  vpc_img_info roi_img,
                                         const long long id,const std::string &json_str);
  
fce4580d   Hu Chunming   更新最新代码:修改解码器实现方式并...
78
79
    void retrograde_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
    void trespass_snapshot(vector<string>& vpt_interest_task_id, vector<vector<int>> deleteObjectID);
b00d3d35   Hu Chunming   添加行人、机动车非法闯入
80
    void void retrograde_trespass_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) ;(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) void retrograde_trespass_alarm(const OBJ_KEY &obj_key, const algorithm_type_t &algor_type) ;  
29b64a88   Hu Chunming   添加行人逆行算法
81
  
9fc79d43   Hu Chunming   同步代码初步跑通
82
83
84
85
86
87
88
89
90
    void cross_line_process(vector<DeviceMemory*> vec_devMem, vector<onelevel_det_result>& vptResult, algorithm_type_t eType);
  
    void wander_detect(vector<DeviceMemory*>& vec_gpuMem, vector<onelevel_det_result>& vptResult, algorithm_type_t eType);
  
    int gather_process(vector<DeviceMemory*>& vec_gpuMem, vector<onelevel_det_result> &ol_det_result, algorithm_type_t algor_type);
  
    // 轨迹记录
    void trace_record(vector<DeviceMemory*>& vec_gpuMem, vector<onelevel_det_result>& vptResult);
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
91
92
93
94
95
96
97
  private:
    int m_devId; 
  
    snapshot_reprocessing *m_snapshot_reprocessing{nullptr};
    task_param_manager *m_task_param_manager{nullptr};
    save_snapshot_reprocessing *m_save_snapshot_reprocessing{nullptr};
  
9b4d4adf   Hu Chunming   添加定时抓拍;
98
99
    std::thread* m_timing_snapshot_thread;
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
100
101
102
103
104
105
106
107
108
109
110
111
112
113
    VPTProcess vpt_process;
    int skip_frame_ = 5; // 控制跳帧参数
  
    deque<DeviceMemory*> m_RgbDataList;
    mutex m_DataListMtx; 
  
    mutex m_FinishedTaskMtx;
    map<string,bool> m_FinishedTaskMap;
  
    thread* m_pAlgorthimThread;
    bool m_bfinish{false};
  
    int m_batch_size{1};
  
571e8ac8   Hu Chunming   完成轨迹定时抓拍
114
115
116
    set<OBJ_KEY> m_total_snapshot_info_multi_object;
    mutex m_total_mutex;
  
9fc79d43   Hu Chunming   同步代码初步跑通
117
118
119
    mutex m_TotalObjMtx ;
    map<OBJ_KEY, OBJ_INDEX> m_total_obj_info; // 记录目标轨迹
  
9b4d4adf   Hu Chunming   添加定时抓拍;
120
    JpegUtil jpegUtil;
e109b001   Hu Chunming   修正多显卡问题
121
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
122
123
124
125
  #ifdef POST_USE_RABBITMQ
    mq::Manager *mq_manager_{nullptr};
  #endif
  
29b64a88   Hu Chunming   添加行人逆行算法
126
127
128
129
  
    ai_engine_module::pedestrian_vehicle_retrograde::PedestrianVehicleRetrograde pedestrian_vehicle_retrograde_;
    ai_engine_module::pedestrian_vehicle_trespass::PedestrianVehicleTrespass pedestrian_vehicle_trespass_;
  
9fc79d43   Hu Chunming   同步代码初步跑通
130
131
132
133
134
135
136
137
138
    ai_engine_module::RegionLeave m_algorthim_region_leave;
    ai_engine_module::RegionLeave m_algorthim_region_dismiss;
    ai_engine_module::RegionLeave m_algorthim_region_fastmoving;
  
    GatherDetect m_human_gather;
    GatherDetect m_human_density;
    GatherDetect m_human_region_gather;
    GatherDetect m_vehicle_gather;
  
0b4cd5d5   Hu Chunming   完成轨迹定时抓拍
139
  };