//
|
// 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};
|
}
|