派生自 Algorithm/baseDetector

Scheaven
2021-06-03 168af40fe9a3cc81c6ee16b3e81f154780c36bdb
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
62
63
64
65
66
67
68
69
70
71
72
73
//
// Created by Scheaven on 2020/3/23.
//
 
#include "tracker_manager.h"
#include <thread>
#include <unistd.h>
#include <cstdlib>
#include <algorithm>
#include <iostream>
 
//DetecterManager DM; // 准备人体检测器
TrackerManager::TrackerManager()
{
 
}
 
TrackerManager::~TrackerManager()
{
 
}
 
//调用其他释放函数
void TrackerManager::release()
{
    DetecterManager::getInstance()->release();
}
 
void TrackerManager::init_load_model()
{
    SLOG::getInstance()->addLog(0, "loading YOLO model ---------");
    DetecterManager::getInstance();
    Detector::getInstance();
}
 
// ------------------------------ SDK 代码封装部分 ----------------------------------
// 模型检测 + 编码器 + 追踪 SDK封装   // 综合人脸的方法
void TrackerManager::single_SDK(const int cam_id, const void *img, TResult& t_result)
{
    TImage *frame_img = (TImage*)img;
    cv::Mat frame(Size(frame_img->width, frame_img->height), CV_8UC3);
    frame.data = (uchar*)frame_img->data;   //注意不能写为:(uchar*)pFrameBGR->data
 
    DetecterManager::getInstance()->detecter_main(frame, t_result);
 
#ifdef S_DEBUG
    draw_SDK_result(cam_id, frame, t_result); //多线程无法调用绘图
#endif
 
    SLOG::getInstance()->addLog(0, ":::::::::single_SDK end:::::");
}
 
void TrackerManager::init_target(Target *t){
    t->attribute = NULL;
    t->feature = NULL;
    t->id = 0;
    t->rect = TRect{0,0,0,0};
    t->confidence = 0;
    t->attribute_size = 0;
    t->feature_size = 0;
}
 
void TrackerManager::init_target(TestTarget *t){
    t->attribute = NULL;
    t->feature = NULL;
    t->id = 0;
    t->rect = TRect{0,0,0,0};
    t->confidence = 0;
    t->attribute_size = 0;
    t->feature_size = 0;
    t->faceID = 0;
    t->faceRect = TRect{0,0,0,0};
}