summaryrefslogtreecommitdiffhomepage
path: root/tracker-aruco/ftnoir_tracker_aruco.h
diff options
context:
space:
mode:
Diffstat (limited to 'tracker-aruco/ftnoir_tracker_aruco.h')
-rw-r--r--tracker-aruco/ftnoir_tracker_aruco.h70
1 files changed, 42 insertions, 28 deletions
diff --git a/tracker-aruco/ftnoir_tracker_aruco.h b/tracker-aruco/ftnoir_tracker_aruco.h
index 6c249c6a..1d6fd107 100644
--- a/tracker-aruco/ftnoir_tracker_aruco.h
+++ b/tracker-aruco/ftnoir_tracker_aruco.h
@@ -37,34 +37,48 @@
using namespace options;
-struct settings : opts {
- value<QString> camera_name { b, "camera-name", ""};
- value<int> fov { b, "field-of-view", 56 };
+enum aruco_fps
+{
+ fps_default = 0,
+ fps_30 = 1,
+ fps_60 = 2,
+ fps_75 = 3,
+ fps_125 = 4,
+ fps_200 = 5,
+ fps_50 = 6,
+ fps_100 = 7,
+ fps_120 = 8,
+ fps_MAX = 9,
+};
+struct settings : opts {
value<double> headpos_x { b, "headpos-x", 0 },
headpos_y { b, "headpos-y", 0 },
headpos_z { b, "headpos-z", 0 };
- value<int> force_fps { b, "force-fps", 0 },
- resolution { b, "force-resolution", 0 };
+ value<QString> camera_name { b, "camera-name", ""};
+ value<int> resolution { b, "force-resolution", 0 };
+ value<int> fov { b, "field-of-view", 56 };
+ value<aruco_fps> force_fps { b, "force-fps", fps_default };
- settings() : opts("aruco-tracker") {}
+ settings();
};
-class aruco_dialog;
-
class aruco_tracker : protected virtual QThread, public ITracker
{
Q_OBJECT
- friend class aruco_dialog;
- static constexpr inline float c_search_window = 1.3f;
+ static constexpr float c_search_window = 1.3f;
public:
aruco_tracker();
~aruco_tracker() override;
module_status start_tracker(QFrame* frame) override;
void data(double *data) override;
void run() override;
+
void getRT(cv::Matx33d &r, cv::Vec3d &t);
+ QMutex camera_mtx;
+ cv::VideoCapture camera;
+
private:
bool detect_with_roi();
bool detect_without_roi();
@@ -81,48 +95,46 @@ private:
void set_detector_params();
void cycle_detection_params();
- cv::VideoCapture camera;
- QMutex camera_mtx;
QMutex mtx;
std::unique_ptr<cv_video_widget> videoWidget;
std::unique_ptr<QHBoxLayout> layout;
settings s;
double pose[6] {}, fps = 0;
double no_detection_timeout = 0;
- cv::Mat frame, grayscale, color;
cv::Matx33d r;
- std::vector<cv::Point3f> obj_points {4};
cv::Matx33d intrinsics = cv::Matx33d::eye();
- aruco::MarkerDetector detector;
- std::vector<aruco::Marker> markers;
cv::Vec3d t;
cv::Vec3d rvec, tvec;
- std::vector<cv::Point2f> roi_projection;
- std::vector<cv::Point2f> repr2;
cv::Matx33d m_r, m_q, rmat = cv::Matx33d::eye();
cv::Vec3d euler;
std::vector<cv::Point3f> roi_points {4};
+ std::vector<cv::Point2f> roi_projection;
+ std::vector<cv::Point2f> repr2;
+ std::vector<cv::Point3f> obj_points {4};
+ aruco::MarkerDetector detector;
+ std::vector<aruco::Marker> markers;
+ cv::Mat frame, grayscale, color;
cv::Rect last_roi { 65535, 65535, 0, 0 };
Timer fps_timer, last_detection_timer;
unsigned adaptive_size_pos { 0 };
bool use_otsu = false;
#if !defined USE_EXPERIMENTAL_CANNY
- static constexpr inline int adaptive_thres = 6;
+ static constexpr int adaptive_thres = 6;
#else
- static constexpr inline int adaptive_thres = 3;
+ static constexpr int adaptive_thres = 3;
#endif
- static constexpr inline double timeout = .35;
- static constexpr inline double timeout_backoff_c = .25;
+ static constexpr double timeout = .35;
+ static constexpr double timeout_backoff_c = .25;
- static constexpr inline float size_min = 0.05;
- static constexpr inline float size_max = 0.5;
+ static constexpr float size_min = 0.05f;
+ static constexpr float size_max = 0.5f;
- static constexpr inline double RC = .25;
+ static constexpr double RC = .25;
#ifdef DEBUG_UNSHARP_MASKING
- static constexpr inline double gauss_kernel_size = 3;
+ static constexpr double gauss_kernel_size = 3;
cv::Mat blurred;
#endif
};
@@ -135,6 +147,8 @@ public:
void register_tracker(ITracker * x) override { tracker = static_cast<aruco_tracker*>(x); }
void unregister_tracker() override { tracker = nullptr; }
private:
+ void make_fps_combobox();
+
Ui::Form ui;
aruco_tracker* tracker;
settings s;
@@ -153,6 +167,6 @@ private Q_SLOTS:
class aruco_metadata : public Metadata
{
Q_OBJECT
- QString name() { return QString("aruco -- paper marker tracker"); }
- QIcon icon() { return QIcon(":/images/aruco.png"); }
+ QString name() override { return QString("aruco -- paper marker tracker"); }
+ QIcon icon() override { return QIcon(":/images/aruco.png"); }
};