-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathMainTask.hpp
118 lines (84 loc) · 2.51 KB
/
MainTask.hpp
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#ifndef MAINTASK_HPP_
#define MAINTASK_HPP_
// Camera Task
#include "Camera/include/Camera.hpp"
// Writer and reader Task
#include "Codec/include/VideoReader.hpp"
#include "Codec/include/VideoWriter.hpp"
// Detection Task
#include "Detection/include/Detection.hpp"
#include "Detection/include/ReDetect.hpp"
#include "Detection/include/Tracking.hpp"
//#include "Detection/include/TraEstim.hpp"
#include "Detection/include/TfliteWorker.hpp"
#include "./Transporter/include/ResultTransporter.hpp"
// Transporter Task
#include "Transporter/include/VideoTransporter.hpp"
#include <iostream>
#include <QObject>
#include <unistd.h>
#include <QDebug>
#include "./Setting.hpp"
class TransVideoTask : public QObject
{
Q_OBJECT
//std::shared_ptr<VideoTransporter> transporter;
VideoTransporter *transporter;
bool if_open{false};
public:
TransVideoTask(QObject *parent = nullptr);
void working(cv::Mat &frame);
void setTransport();
signals:
void setFailed(std::string &error_msg);
};
class CameraTask : public QObject
{
Q_OBJECT
std::shared_ptr<Camera> camera;
signals:
void toTransport(cv::Mat &frame);
void videoLost(std::string &error_msg);
void toDisplay(cv::Mat &frame, std::vector<TrackingBox> &boxes);
void toDetect(cv::Mat &frame, int if_direct_show);
public:
cv::Mat frame;
int if_direct_show = 0;
CameraTask(QObject *parent = nullptr);
void working();
void setCamera();
void reboot();
public slots:
void directDislay();
//DetectTask detect_task;
};
class DetectTask : public QObject
{
Q_OBJECT
std::shared_ptr<YoloWorker> detector;
std::shared_ptr<ReDetect> redetect;
std::shared_ptr<Tracking> tracking;
bool if_open{false};
int i = 0;
public:
DetectTask(QObject *parent = nullptr);
void working(cv::Mat &frame, int if_direct_show);
signals:
void setFailed(std::string &error_msg);
void toDisplay(cv::Mat &frame, std::vector<TrackingBox> &rects);
void toSent(float *id_vector, cv::Rect2d &rect, uint8_t camera_id, uint8_t person_id);
};
class TransDataTask : public QObject
{
Q_OBJECT
std::shared_ptr<ResultTransporter> transporter;
bool if_open{false};
public:
TransDataTask(int port = 5005, QObject *parent = nullptr);
void transmit(float *id_vector, cv::Rect2d &rect, uint8_t camera_id, uint8_t person_id);
void receive();
signals:
void sentFailed(std::string &error_msg);
void toReDetect(float *id_vector, cv::Rect2d &rect, uint8_t camera_id, uint8_t person_id);
};
#endif