basic版本的yolo,在yolov3版本上增加人体跟踪
xuepengqiang
2020-05-26 5966f2b095841627d62daac0159e81f83544b85c
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
//
// Created by Scheaven on 2020/3/23.
//
 
#ifndef INC_01_CPP_SORT_TRACKER_MANAGER_H
#define INC_01_CPP_SORT_TRACKER_MANAGER_H
#include "detecter_manager.h"
#include "../encoder_tools/FeatureEncoder.h"
#include "../tracker_tools/tracker.h"
#include "../config.h"
#include "../utils/result_util.h"
#include "../utils/config_util.h"
#include "../utils/time_util.h"
 
using namespace std;
using namespace cv;
 
class TrackerManager{
public:
    std::vector<std::shared_ptr<tracker>> CAMERAS_VCT;
    std::vector<DETECTIONS> DETECTION_VCT;
    std::vector<cv::Rect> boxes;
    int cam_id; //指定待追踪摄像机编号
    Mat frame;
 
private:
    void single_draw(int cam_id, cv::Mat img, FRAME_RESULT& result_vec);
    void switch_SDK_TResult(int cam_id, cv::Mat img, DETECTIONS detections, TResult *t_result);
    void sub_thread_tracking(int cam_id, cv::Mat frame, FRAME_RESULT result_vec, DETECTIONS detections);
    std::vector<DETECTION_ROW> deal_features(std::vector<cv::Rect> boxes, std::vector<vector<float> > feats);
    void single_tracker(int cam_id, DETECTIONS& detections);
    static void init_target(Target *t);
 
public:
    TrackerManager();
    ~TrackerManager();
    void release();
    void init_load_model();
    bool add_cam(int cam_id);
    void single_detect_tracking(int cam_id,cv::Mat frame,FRAME_RESULT result_vec);
    void single_SDK(const int cam_id, const void *frame,TResult *t_result);
    void mul_detect_tracking(std::vector<int> cam_ids, std::vector<cv::Mat> frame_vec, std::vector<FRAME_RESULT>&  results_vec);
 
    // 其他测试功能接口(测试使用)
    std::vector<DETECTION_ROW> en_features(string in_path);
    std::vector<int> read_tracker(string in_path);
    Mat h_tracker(int cam_id, Mat frame, DETECTIONS detections);
};
 
 
 
#endif //INC_01_CPP_SORT_TRACKER_MANAGER_H