diff options
Diffstat (limited to 'tracker-aruco/ftnoir_tracker_aruco.h')
-rw-r--r-- | tracker-aruco/ftnoir_tracker_aruco.h | 70 |
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"); } }; |