diff options
-rw-r--r-- | tracker-pt/ftnoir_tracker_pt.cpp | 27 | ||||
-rw-r--r-- | tracker-pt/ftnoir_tracker_pt.h | 18 |
2 files changed, 13 insertions, 32 deletions
diff --git a/tracker-pt/ftnoir_tracker_pt.cpp b/tracker-pt/ftnoir_tracker_pt.cpp index 1fbd4373..ca81ff40 100644 --- a/tracker-pt/ftnoir_tracker_pt.cpp +++ b/tracker-pt/ftnoir_tracker_pt.cpp @@ -9,17 +9,16 @@ #include "ftnoir_tracker_pt.h" #include "compat/camera-names.hpp" #include "compat/math-imports.hpp" -#include <QHBoxLayout> + #include <cmath> +#include <functional> + +#include <QHBoxLayout> #include <QDebug> #include <QFile> #include <QCoreApplication> -#include <functional> -Tracker_PT::Tracker_PT() : - point_count(0), - commands(0), - ever_success(false) +Tracker_PT::Tracker_PT() { cv::setBreakOnError(true); @@ -30,25 +29,13 @@ Tracker_PT::Tracker_PT() : Tracker_PT::~Tracker_PT() { - set_command(ABORT); + requestInterruption(); wait(); QMutexLocker l(&camera_mtx); camera.stop(); } -void Tracker_PT::set_command(Command command) -{ - //QMutexLocker lock(&mutex); - commands |= command; -} - -void Tracker_PT::reset_command(Command command) -{ - //QMutexLocker lock(&mutex); - commands &= ~command; -} - void Tracker_PT::run() { cv::setNumThreads(1); @@ -59,7 +46,7 @@ void Tracker_PT::run() QTextStream log_stream(&log_file); #endif - while((commands & ABORT) == 0) + while(!isInterruptionRequested()) { CamInfo cam_info; bool new_frame = false; diff --git a/tracker-pt/ftnoir_tracker_pt.h b/tracker-pt/ftnoir_tracker_pt.h index 35da957b..8274d62e 100644 --- a/tracker-pt/ftnoir_tracker_pt.h +++ b/tracker-pt/ftnoir_tracker_pt.h @@ -23,6 +23,8 @@ #include <memory> #include <vector> +#include <opencv2/core.hpp> + #include <QCoreApplication> #include <QThread> #include <QMutex> @@ -60,17 +62,10 @@ public slots: protected: void run() override; private: - // thread commands - enum Command : unsigned char - { - ABORT = 1<<0 - }; - void set_command(Command command); - void reset_command(Command command); - QMutex camera_mtx; QMutex data_mtx; - Camera camera; + Camera camera; + PointExtractor point_extractor; PointTracker point_tracker; @@ -83,9 +78,8 @@ private: QSize preview_size; - std::atomic<unsigned> point_count; - std::atomic<unsigned char> commands; - std::atomic<bool> ever_success; + std::atomic<unsigned> point_count = 0; + std::atomic<bool> ever_success = false; static constexpr f rad2deg = f(180/M_PI); //static constexpr float deg2rad = float(M_PI/180); |