summaryrefslogtreecommitdiffhomepage
path: root/FTNoIR_Tracker_PT/pt_video_widget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'FTNoIR_Tracker_PT/pt_video_widget.cpp')
-rw-r--r--FTNoIR_Tracker_PT/pt_video_widget.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/FTNoIR_Tracker_PT/pt_video_widget.cpp b/FTNoIR_Tracker_PT/pt_video_widget.cpp
index 5ac002f4..38c49567 100644
--- a/FTNoIR_Tracker_PT/pt_video_widget.cpp
+++ b/FTNoIR_Tracker_PT/pt_video_widget.cpp
@@ -18,7 +18,15 @@ using namespace std;
void PTVideoWidget::update_image(const cv::Mat& frame)
{
QMutexLocker foo(&mtx);
- _frame = frame;
+ const int rate = 40;
+ if (freshp)
+ return;
+ if (!update_throttler.isValid() || update_throttler.elapsed() > rate)
+ {
+ _frame = frame.clone();
+ update_throttler.restart();
+ freshp = true;
+ }
}
// ----------------------------------------------------------------------------
@@ -42,8 +50,9 @@ VideoWidgetDialog::VideoWidgetDialog(QWidget *parent, FrameProvider* provider)
void PTVideoWidget::update_and_repaint()
{
QMutexLocker foo(&mtx);
- if (_frame.empty())
+ if (_frame.empty() || !freshp)
return;
+ freshp = false;
QImage qframe = QImage(_frame.cols, _frame.rows, QImage::Format_RGB888);
uchar* data = qframe.bits();
const int pitch = qframe.bytesPerLine();