MediaX v1.1.2 [7554dd3]
Video streaming for military vehicles
Loading...
Searching...
No Matches
main_window.h
1#ifndef MAIN_WINDOW_H
2#define MAIN_WINDOW_H
3
4#include <QMainWindow>
5#include <QMediaPlayer>
6#include <QVideoWidget>
7#include <QGraphicsView>
8#include <QGraphicsScene>
9#include <QGraphicsRectItem>
10#include <QMouseEvent>
11#include <QVideoFrame>
12#include <QVideoSink>
13#include <QPainter>
14
15#include "cvtrack/tracker.h"
16
17class VideoWidget : public QWidget
18{
19 Q_OBJECT
20
21public:
22 VideoWidget(QWidget *parent = nullptr);
23 void set_video_sink(QVideoSink *sink);
24 void update_tracking_boxes(const std::vector<cvtrack::TrackedObject> &objects);
25
26protected:
27 void mousePressEvent(QMouseEvent *event) override;
28 void mouseMoveEvent(QMouseEvent *event) override;
29 void mouseReleaseEvent(QMouseEvent *event) override;
30 void paintEvent(QPaintEvent *event) override;
31
32signals:
33 void new_bounding_box(const QRect &rect);
34
35private slots:
36 void on_video_frame(const QVideoFrame &frame);
37
38private:
39 QPoint start_point_;
40 QPoint end_point_;
41 bool drawing_;
42 QRect current_selection_;
43 QVideoSink *video_sink_;
44 QImage current_frame_;
45 std::vector<cvtrack::TrackedObject> tracked_objects_;
46};
47
48class MainWindow : public QMainWindow
49{
50 Q_OBJECT
51
52public:
53 MainWindow(QWidget *parent = nullptr);
55
56 void set_video_file(const QString &file_path);
57
58private slots:
59 void on_new_bounding_box(const QRect &rect);
60 void on_media_status_changed(QMediaPlayer::MediaStatus status);
61 void on_video_frame_changed(const QVideoFrame &frame);
62
63private:
64 QMediaPlayer *player_;
65 VideoWidget *video_widget_;
66 QVideoSink *video_sink_;
67 cvtrack::Tracker tracker_;
68 bool tracking_started_;
69};
70
71#endif // MAIN_WINDOW_H
Definition main_window.h:49
Definition main_window.h:18
Definition tracker.h:17