iVS3D v2.0.0
Loading...
Searching...
No Matches
videoplayer.h
1#ifndef VIDEOPLAYER_H
2#define VIDEOPLAYER_H
3
4#include <QWidget>
5#include <QShortcut>
6#include <QKeySequence>
7#include <QGraphicsTextItem>
8#include <QGraphicsOpacityEffect>
9
10#include "opencv2/core.hpp"
11#include "opencv2/imgproc.hpp"
12#include "opencv2/imgcodecs.hpp"
13#include "ui_videoplayer.h"
14#include "cvmat_qmetadata.h"
15
16#define OVERLAY_PADDING 13
17#define OVERLAY_MIN_WIDTH 50
18
19namespace Ui {
20class VideoPlayer;
21}
22
48class VideoPlayer : public QWidget
49{
50 Q_OBJECT
51
52public:
53
59 explicit VideoPlayer(QWidget *parent = nullptr, ColorTheme theme = DARK);
60
62
67 void showImages(std::vector<cv::Mat*> images);
68
73 void showImage(cv::Mat *image);
74
79 void setKeyframe(bool isKeyframe);
80
85 void setKeyframeCount(unsigned int keyframeCount);
86
91 void setEnabledBackBtns(bool enabled);
92
97 void setEnabledForwardBtns(bool enabled);
98
103 void setPlaying(bool playing);
104
109 void setStepsize(unsigned int stepsize);
110
115 void setKeyframesOnly(bool checked);
116
121 void addWidgetToLayout(QWidget *widget);
122
127 void removeWidgetFromLayout(QWidget *widget);
128
133 void setColorTheme(ColorTheme theme);
134
135 void setCropStatus(bool checked);
136 bool getCropStatus();
137
139 QString text;
140 bool isHeader = false;
141 Qt::TextElideMode elidMode = Qt::ElideRight;
142 };
143
144 void updateOverlayText(const QList<OverlayEntry> &content);
145
146 void updateRoi(const QRect& roi = QRect());
147signals:
148
152 void sig_play();
153
158
163
168
173
178
183 void sig_toggleKeyframesOnly(bool checked);
184
189 void sig_changeStepsize(unsigned int stepsize);
190
195
200
201 void sig_useCropChanged(bool useCrop);
202
203protected:
204 void resizeEvent(QResizeEvent *e); // used to resize displayed image
205
206private slots:
207 void on_pushButton_firstPic_clicked();
208 void on_pushButton_prevPic_clicked();
209 void on_pushButton_playPause_clicked();
210 void on_pushButton_nextPic_clicked();
211 void on_pushButton_lastPic_clicked();
212 void on_checkBox_onlyKeyframes_stateChanged(int arg1);
213 void on_pushButton_setKeyframe_clicked();
214 void on_spinBox_stepsize_valueChanged(int arg1);
215 void on_pushButton_resetKeyframes_clicked();
216
217private:
218 Ui::VideoPlayer *ui;
219 ColorTheme m_colorTheme;
220 QShortcut *m_prevSC;
221 QShortcut *m_nextSC;
222 QLabel *m_overlayLabel;
223 QGraphicsOpacityEffect *m_overlayOpacityEffect;
224 QRect m_roi;
225 QGraphicsRectItem *m_roiRect;
226 QList<OverlayEntry> m_overlayEntries;
227
228 QImage qImageFromCvMat(cv::Mat* input, bool bgr = true);
229 void alphaBlend(cv::Mat *foreground, cv::Mat *background, float alpha, cv::Mat &output);
230 void updateOverlay();
231 void drawRoi();
232 bool checkOverlap();
233};
234
235#endif // VIDEOPLAYER_H
The VideoPlayer class provides a view to display images and holds buttons to interact with image sequ...
Definition videoplayer.h:49
void sig_deleteAllKeyframes()
[signal] sig_deleteAllKeyframes() is emitted on delete all button press.
void sig_showNextImage()
[signal] sig_showNextImage() is emitted on show next button press.
void sig_changeStepsize(unsigned int stepsize)
[signal] sig_changeStepsize(...) is emitted if stepsize changed.
void setColorTheme(ColorTheme theme)
setColorTheme updates text and icon colors according to a given theme
Definition videoplayer.cpp:234
void setEnabledBackBtns(bool enabled)
setEnabledBackBtns enables or disables the |<< and |< buttons.
Definition videoplayer.cpp:189
void sig_toggleKeyframes()
[signal] sig_toggleKeyframes() is emitted on set keyframe / remove keyframe button press.
void setEnabledForwardBtns(bool enabled)
setEnabledForwardBtns enables or disables the >| and >>| buttons.
Definition videoplayer.cpp:197
void setKeyframeCount(unsigned int keyframeCount)
setKeyframeCount displays the given number under keyframe count.
Definition videoplayer.cpp:183
void setPlaying(bool playing)
setPlaying changes the play/pause button between > and ||.
Definition videoplayer.cpp:205
void sig_cropEdit()
[signal] sig_cropEdit() is emitted if the crop button is pressed.
void showImages(std::vector< cv::Mat * > images)
showImages displays the given images.
Definition videoplayer.cpp:134
void setKeyframesOnly(bool checked)
setKeyframesOnly checks the iterate keyframes only checkbox
Definition videoplayer.cpp:217
void sig_toggleKeyframesOnly(bool checked)
[signal] sig_toggleKeyframesOnly(...) is emitted if the keyframes only checkbox is checked/unchecked.
void setStepsize(unsigned int stepsize)
setStepsize changes the value of the stepsize box.
Definition videoplayer.cpp:212
void addWidgetToLayout(QWidget *widget)
addWidgetToLayout adds the given QWidget to the VideoPlayer between the displayed image and the inter...
Definition videoplayer.cpp:223
void sig_showFirstImage()
[signal] sig_showFirstImage() is emitted on show first button press.
void sig_play()
[signal] sig_play() is emitted on play / pause button press.
void setKeyframe(bool isKeyframe)
setKeyframe highlights the displayed image if isKeyframe is true.
Definition videoplayer.cpp:175
void showImage(cv::Mat *image)
showImage displays the given image.
Definition videoplayer.cpp:167
void removeWidgetFromLayout(QWidget *widget)
removeWidgetFromLayout removes the given QWidget from the VideoPlayer.
Definition videoplayer.cpp:229
void sig_showLastImage()
[signal] sig_showLastImage() is emitted on show last button press.
void sig_showPreviousImage()
[signal] sig_showPreviousImage() is emitted on show previous button press.
Definition videoplayer.h:138