blob: eccc7ad7c3420702fe8e645a268165ba07bf7aa0 (
plain)
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
|
#include "..\ftnoir_tracker_base\ftnoir_tracker_base.h"
#include "face-detect.h"
#include "ui_FTNoIR_FD_controls.h"
#include <Qt>
#include <QtCore/QEvent>
#include <Qt/qt_windows.h>
#include <QMessageBox>
#include <QSettings>
#include <QProcess>
#include "math.h"
#include <Windows.h>
using namespace std;
static LPTSTR prog_cmdline = (LPTSTR) TEXT("face-detect.exe");
static LPTSTR fd_shm_name = (LPTSTR) TEXT("face-detect-shm");
static LPTSTR fd_mutex_name = (LPTSTR) TEXT("face-detect-mutex");
class VideoWidget : public QWidget
{
Q_OBJECT
public:
VideoWidget(HANDLE hMutex, unsigned char* data, struct face_detect_shm* shm);
protected:
void paintEvent(QPaintEvent*);
private:
HANDLE hMutex;
unsigned char* data;
struct face_detect_shm* shm;
};
class FTNoIR_Tracker : public ITracker
{
public:
FTNoIR_Tracker();
~FTNoIR_Tracker();
void Initialize( QFrame *videoframe, int numTracker );
void StartTracker( HWND parent_window );
void StopTracker( bool exit );
bool GiveHeadPoseData(THeadPoseData *data); // Returns true if confidence is good
void loadSettings();
// bool setParameterValue(const int index, const float newvalue);
bool notifyZeroed();
void refreshVideo();
private:
bool activep;
//QList<std::pair<float,float>> parameterRange;
//QList<float> parameterValueAsFloat;
void TerminateTracker();
HANDLE hMutex, hMapFile;
struct face_detect_shm* shm;
PROCESS_INFORMATION procInfo;
VideoWidget* ctrl;
QFrame* qframe;
};
class TrackerControls: public QWidget, Ui::UICFDClientControls, public ITrackerDialog
{
Q_OBJECT
public:
explicit TrackerControls();
virtual ~TrackerControls();
void Release(); // Member functions which are accessible from outside the DLL
void Initialize(QWidget *parent, int numTracker);
void registerTracker(ITracker *tracker) {};
void unRegisterTracker() {};
void NotifyZeroing();
private:
Ui::UICFDClientControls ui;
void loadSettings();
void save();
bool settingsDirty;
HANDLE hMapFile, hMutex;
struct face_detect_shm* shm;
private slots:
void doOK();
void doCancel();
void settingChanged() { settingsDirty = true; };
void doSetRedetectMs(int val);
void doSetCameraId(int val);
void doSetVideoWidget(bool val);
signals:
};
//*******************************************************************************************************
// FaceTrackNoIR Tracker DLL. Functions used to get general info on the Tracker
//*******************************************************************************************************
class FTNoIR_TrackerDll : public ITrackerDll
{
public:
FTNoIR_TrackerDll();
~FTNoIR_TrackerDll();
void Initialize();
void getFullName(QString *strToBeFilled);
void getShortName(QString *strToBeFilled);
void getDescription(QString *strToBeFilled);
void getIcon(QIcon *icon);
private:
QString trackerFullName; // Trackers' name and description
QString trackerShortName;
QString trackerDescription;
};
|