VAT  3.0
Video Analysis Tool
VideoAnalysis.h
1 #ifndef VIDEOANALYSIS_H
2 #define VIDEOANALYSIS_H
3 
4 #ifdef __COMPILE_QT5__
5  #include <QtWidgets/QTextEdit>
6  #include <QtWidgets/QCheckBox>
7 #else
8  #include<QTextEdit>
9  #include<QCheckBox>
10 #endif
11 #include<deque>
12 #include<set>
13 #include<map>
14 
15 #include "Datapool.h"
16 #include "MODULES/ModuleInterface.h"
17 #include "DRAW/drawInterface.h"
18 #include "paintView.h"
19 
20 #define AppendToLog(s) VideoAnalysis::m_data->appendToLog(s)
21 #define pauseApp() VideoAnalysis::m_data->pauseApp()
22 
23 
27 class VideoAnalysis: public QObject {
28 public:
37  VideoAnalysis(char *i_config_file, Datapool *d);
38  ~VideoAnalysis();
39 
44  void resetModules();
45 
52  void resetModules(std::deque<std::string>& sequence);
53 
60  bool setParameters();
61 
69 
78 
85  bool init();
86 
94  bool execute();
95 
104  void copyBytes(QImage *im1, QImage *im2);
105 
106  //Module management functions
107 
112  void setAvailableModules();
113 
119 
125  void deleteModuleFromSequence(std::deque<ModuleInterface *>::iterator *);
126 
133  void insertModuleInSequence(std::deque<ModuleInterface *>::iterator *, std::string name);
134 
140  void clearSequence();
141 
148  static void appendToLog(const QString& toLog);
149 
154  void setAvailableModels();
155 
163  static bool isValidModelName(QString name);
164 
169  static Datapool *m_data;
170 
175 
180 
185 
190 
191  //Application Parameters
192  //TimeStats
193  bool m_timeStatsActive;
194  bool m_timeOutputToFile;
195  QString m_timeOutputFile;
196  long m_timeAtFrame;
197  int m_timeAtStep;
198  bool m_firstTime;
199  QFile m_timeFile;
200 
201  //Display Parameters
202 
203  //Lista construida desde el archivo de configuracion
204  //std::map<std::string, std::map<std::string, std::string > >* list; //where is used this list? by corellana
205 
206  //paint
207  static std::deque<paintView *> paintDeque;
208 
209  //Modulos:
210  static std::set<std::string> availableModules;
211  static std::map<std::string, ModuleType> moduleType;
212  static std::map<std::string, ModuleInterface *(*)(Datapool *)> moduleConstructor;
213  static std::deque<ModuleInterface *> moduleSequence;
214  static std::multimap<ModuleType, std::string, std::less<ModuleType> > modulesByType;
215 
216  std::deque<ModuleInterface *>::iterator seq_it;
217  std::deque<ModuleInterface *>::iterator seq_it_end;
218 
219  //Modelos
220  static std::set<QString> availableModels;
221  static std::map<QString, ReliabilitySingleModelInterface *(*)(int)> modelConstructor;
222 
223  //Time Stat Functions
224  void updateTimeStats(int index, int elapsed_ms);
225  void initTimeStats();
226  void initTimeStatsForModule(int index, QString name);
227  void printTimeStats();
228 
229  //Flags de los fake modules
230  void setFakeSegmentationFlag(bool option);
231  void setFakeTrackingFlag(bool option);
232  bool fakeSegmentationFlag;
233  bool fakeTrackingFlag;
234 
235 
246  static void saveImageToDir(QImage *im, int frame, QString &dir);
247 
248  //App Configuration XML variables
249  QDomDocument *xmlAppConfig;
250  QDomElement rootAppConfig;
251 
252  //Display Configuration XML variables
253  QDomDocument *xmlDisplayConfig;
254  QDomElement rootDisplayConfig;
255 
256  //Module Configuration XML variables
257  QDomDocument *xmlConfig;
258  QDomElement rootConfig;
259 
260  QString m_viewFile;
261 };
262 
263 
264 #endif // VIDEOANALYSIS_H
bool setApplicationParameters()
Calls to the specific method of parameters lecture of application.
Definition: VideoAnalysis.cpp:193
bool setParameters()
Calls to specific method of parameters lecture of each module.
Definition: VideoAnalysis.cpp:387
bool init()
Calls to the specific method of initialization of each module.
Definition: VideoAnalysis.cpp:437
void deleteModuleFromSequence(std::deque< ModuleInterface * >::iterator *)
deleteModuleFromSequence
char * m_config_file
configuration file path.
Definition: VideoAnalysis.h:174
VideoAnalysis(char *i_config_file, Datapool *d)
Constructor.
Definition: VideoAnalysis.cpp:47
char * m_app_config_file
application configuration file path.
Definition: VideoAnalysis.h:179
char * m_default_module_seq
default Modules sequence file path.
Definition: VideoAnalysis.h:189
void resetModules()
reinitialize modules variables.
Definition: VideoAnalysis.cpp:172
char * m_display_config_file
display configuration file path.
Definition: VideoAnalysis.h:184
bool setAppParametersOverride()
Opens configuration file and searches for <GeneralApplicationParameters> tag and overrides the defaul...
Definition: VideoAnalysis.cpp:295
static void appendToLog(const QString &toLog)
This method is used to concatenate useful information in graphical interface about different events...
static bool isValidModelName(QString name)
Ensure that model name is registered as an instance.
Definition: VideoAnalysis.cpp:113
void setAvailableModels()
setAvailableModels is in charge of registration of each available model for later usage...
Definition: models.cpp:43
void setAvailableModules()
setAvailableModules is in charge of registration of each available module for later usage...
static void saveImageToDir(QImage *im, int frame, QString &dir)
Saves given image to a given directory.
Definition: VideoAnalysis.cpp:610
An object of this class is instantiated at main code, and this object is used by every class to push ...
Definition: Datapool.h:39
The VideoAnalysis class is in charge to manage each module to actual video processing.
Definition: VideoAnalysis.h:27
void setInitialModuleSequence()
sets initial module sequence according to specified in configuration xml (default_config.xml)
Definition: VideoAnalysis.cpp:118
void copyBytes(QImage *im1, QImage *im2)
Realize a memory copy from image im2 to image im1. Both images must have the same size...
Definition: VideoAnalysis.cpp:597
bool execute()
Calls to the specific method of processing of each module. This method is executed once per each rece...
Definition: VideoAnalysis.cpp:552
static Datapool * m_data
Pool of data that contains all the information of the system that is used and updated for different m...
Definition: VideoAnalysis.h:169
void insertModuleInSequence(std::deque< ModuleInterface * >::iterator *, std::string name)
insertModuleInSequence
void clearSequence()
clearSequence