Newer
Older
/*
* PeTrack - Software for tracking pedestrians movement in videos
* Copyright (C) 2010-2020 Forschungszentrum Jülich GmbH,
* Maik Boltes, Juliane Adrian, Ricardo Martin Brualla, Arne Graf, Paul Häger, Daniel Hillebrand,
* Deniz Kilic, Paul Lieberenz, Daniel Salden, Tobias Schrödter, Ann Katrin Seemann
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include <QtWidgets>
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
#include <QtOpenGL>
#include <QSignalMapper>
// Added for Qt5 support
#include <QtPrintSupport/QPrinter>
#include <QtPrintSupport/QPrintDialog>
#include "stereoItem.h"
#include "stereoWidget.h"
#include "colorMarkerItem.h"
#include "multiColorMarkerItem.h"
#include "colorRangeWidget.h"
#include "colorMarkerWidget.h"
#include "codeMarkerWidget.h"
#include "multiColorMarkerWidget.h"
#include "petrack.h"
#include "control.h"
#include "view.h"
#include "gridItem.h"
#include "imageItem.h"
#include "logoItem.h"
#include "animation.h"
#include "player.h"
#include "calibFilter.h"
#include "autoCalib.h"
#include "recognition.h"
#include "trackerItem.h"
#include "backgroundItem.h"
#include "tracker.h"
#include "trackerReal.h"
#include "cmath"
#ifdef AVI
#include "aviFile.h"
#else
#include "aviFileWriter.h"
#endif
#include "person.h"
#include <time.h>
#include <cstdlib>
#include <iomanip>
#include "opencv2/opencv.hpp"
// Zeitausgabe aktivieren
//#define TIME_MEASUREMENT
//temp muss spaeter herausgenommen werden,
// dient dazu, in anderen dateien um schnell ueber cw->temp1->value() an einstellbare daten zu kommen
Control *cw;
int Petrack::trcVersion = 0;
using namespace::cv;
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
// Reihenfolge des anlegens der objekte ist sehr wichtig
Petrack::Petrack()
{
QIcon icon;
icon.addFile(":/icon"); // about
// icon.addFile(":/icon_small");
// icon.addFile(":/icon_smaller");
icon.addFile(":/icon_smallest"); // window title bar
setWindowIcon(icon); // QIcon(":/icon")fuer about und icon in windows titel bar top left
mHeadSize = -1;
mCmPerPixel = -1;
mScene = NULL;
mTracker = NULL;
mTrackerReal = NULL; // damit beim zeichnen von control mit analysePlot nicht auf einen feheler laeuft
mStatusLabelFPS = NULL;
mStatusPosRealHeight = NULL;
mStatusLabelPosReal = NULL;
mImageItem = NULL;
mRecognitionChanged = true;
mTrackChanged = true;
mCoordItem = NULL;
mImage = NULL;
// mIplImg = NULL;
// mIplImgFiltered = NULL;
setLoading(true);
// mPrevIplImgFiltered = NULL;
// mPrevFrame = -1;
setAcceptDrops(true);
// grabKeyboard(); // nimmt alle Keyboard Eingaben entgegen, eintragen in Text-Felder dann nicht mehr moeglich
// grabMouse(); // nimmt alle MouseEvents eintgegen, Doppelklick etc. dann nicht mehr moeglich
int space = 2;
// setAccessibleName("PeTrack");
mBrightContrastFilter.disable();
// mContrastFilter.disable();
// mBrightFilter.disable();
mBorderFilter.disable();
mSwapFilter.disable();
mBackgroundFilter.disable();
mStereoContext = NULL;
mCalibFilter = new CalibFilter; // schoener waere erst zu erzeugen, wenn video geladen wird, da sonst bei stereo erst normealer und dann stereo objekt erzeugt wird
mCalibFilter->disable(); // aber control widget greift schon bei erzeugung auf alle objekte zur einstellung zurueck
//mCalibFilter.disable(); //enable();
//mImageBorderSize=0;
mControlWidget = new Control(this);
mControlWidget->setFixedWidth(mControlWidget->geometry().width());
mControlWidget->setMinimumHeight(mControlWidget->geometry().height());
mControlWidget->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Expanding);
//setFixedSize(mControlWidget->geometry().width(),mControlWidget->geometry().height());
cw = mControlWidget; // muss spaeter geloescht werden
mStereoWidget = new StereoWidget(this);
mStereoWidget->setWindowFlags(Qt::Window);
mStereoWidget->setWindowTitle("Stereo parameter");
//mStereoWidget->show();
mColorRangeWidget = new ColorRangeWidget(this);
mColorRangeWidget->setWindowFlags(Qt::Window);
mColorRangeWidget->setWindowTitle("Color range");
mColorMarkerWidget = new ColorMarkerWidget(this);
mColorMarkerWidget->setWindowFlags(Qt::Window);
mColorMarkerWidget->setWindowTitle("Color marker parameter");
//mColorMarkerWidget->show();
mCodeMarkerWidget = new CodeMarkerWidget(this);
mCodeMarkerWidget->setWindowFlags(Qt::Window);
mCodeMarkerWidget->setWindowTitle("Code marker parameter");
//mCodeMarkerWidget->show();
mMultiColorMarkerWidget = new MultiColorMarkerWidget(this);
mMultiColorMarkerWidget->setWindowFlags(Qt::Window);
mMultiColorMarkerWidget->setWindowTitle("MultiColor marker parameter");
//mColorMarkerWidget->show();
mScene = new QGraphicsScene(this);
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
mImageItem = new ImageItem(this); // durch uebergabe von scene wird indirekt ein scene->addItem() aufgerufen
mControlWidget->setScene(mScene);
// wird in controll.cpp behandelt!!!
// if (mControlWidget->filterBright->checkState() == Qt::Checked)
// mBrightFilter.enable();
// else //Qt::Unchecked
// mBrightFilter.disable();
// if (mControlWidget->filterContrast->checkState() == Qt::Checked)
// mContrastFilter.enable();
// else //Qt::Unchecked
// mContrastFilter.disable();
// if (mControlWidget->filterContrast->checkState() == Qt::Checked)
// mContrastFilter.enable();
// else //Qt::Unchecked
// mContrastFilter.disable();
mAnimation = new Animation(this);
// mImage = new QImage; // wird erst bei neuer sequenz erstellt, da dort groesse bekannt,
// zudem kann so ueber mImage==NULL beginn abgefragt werden
// // hier koennte ein Einfuehrungsbild mit logo etc eingeblendet werden
// mImage->load(":/logo");
// //C:/Dokumente und Einstellungen/Maik Boltes/Eigene Dateien/diss/logo/logo.png
// mImageItem->setLogo(mImage);
// // so wurde gruene recogniton area zurueckgesetzt:
// //mImageItem->setImage(mImage);
mLogoItem = new LogoItem(this); // durch uebergabe von scene wird indirekt ein scene->addItem() aufgerufen
mLogoItem->setZValue(6); // groesser heisst weiter oben
mExtrCalibration.setMainWindow(this);
//mExtCalibration = new ExtrCalibration(this); // muss vor CoordItem (und GridItem) stehen damit man auf useExtCalib abfragen kann
mGridItem = new GridItem(this);
mGridItem->setZValue(2.5); // durch uebergabe von scene wird indirekt ein scene->addItem() aufgerufen
mCoordItem = new CoordItem(this);
mCoordItem->setZValue(3); // groesser heisst weiter oben
Loading
Loading full blame...