diff options
-rw-r--r-- | tracker-aruco/ftnoir_tracker_aruco.cpp | 29 | ||||
-rw-r--r-- | tracker-aruco/ftnoir_tracker_aruco.h | 32 |
2 files changed, 21 insertions, 40 deletions
diff --git a/tracker-aruco/ftnoir_tracker_aruco.cpp b/tracker-aruco/ftnoir_tracker_aruco.cpp index 0c6f2b75..78be1623 100644 --- a/tracker-aruco/ftnoir_tracker_aruco.cpp +++ b/tracker-aruco/ftnoir_tracker_aruco.cpp @@ -33,31 +33,7 @@ #include <algorithm> #include <iterator> -constexpr double aruco_tracker::timeout; -constexpr double aruco_tracker::timeout_backoff_c; -constexpr const int aruco_tracker::adaptive_sizes[]; - -constexpr const aruco_tracker::resolution_tuple aruco_tracker::resolution_choices[]; - -constexpr const double aruco_tracker::RC; -constexpr const float aruco_tracker::size_min; -constexpr const float aruco_tracker::size_max; - -#ifdef DEBUG_UNSHARP_MASKING -constexpr double aruco_tracker::gauss_kernel_size; -#endif - -aruco_tracker::aruco_tracker() : - pose{0,0,0, 0,0,0}, - fps(0), - no_detection_timeout(0), - obj_points(4), - intrinsics(cv::Matx33d::eye()), - rmat(cv::Matx33d::eye()), - roi_points(4), - last_roi(65535, 65535, 0, 0), - adaptive_size_pos(0), - use_otsu(false) +aruco_tracker::aruco_tracker() { cv::setBreakOnError(true); // param 2 ignored for Otsu thresholding. it's required to use our fork of Aruco. @@ -331,7 +307,6 @@ void aruco_tracker::set_roi_from_projection() void aruco_tracker::set_detector_params() { detector.setDesiredSpeed(3); - detector.setThresholdParams(adaptive_sizes[adaptive_size_pos], adaptive_thres); #if !defined USE_EXPERIMENTAL_CANNY if (use_otsu) detector._thresMethod = aruco::MarkerDetector::FIXED_THRES; @@ -487,7 +462,7 @@ aruco_dialog::aruco_dialog() : connect(&calib_timer, SIGNAL(timeout()), this, SLOT(update_tracker_calibration())); connect(ui.camera_settings, SIGNAL(clicked()), this, SLOT(camera_settings())); - connect(&s.camera_name, SIGNAL(valueChanged(const QString&)), this, SLOT(update_camera_settings_state(const QString&))); + connect(&s.camera_name, base_value::value_changed<QString>(), this, &aruco_dialog::update_camera_settings_state); update_camera_settings_state(s.camera_name); } diff --git a/tracker-aruco/ftnoir_tracker_aruco.h b/tracker-aruco/ftnoir_tracker_aruco.h index e41dfaa2..f25d3314 100644 --- a/tracker-aruco/ftnoir_tracker_aruco.h +++ b/tracker-aruco/ftnoir_tracker_aruco.h @@ -101,27 +101,28 @@ private: std::unique_ptr<cv_video_widget> videoWidget; std::unique_ptr<QHBoxLayout> layout; settings s; - double pose[6], fps, no_detection_timeout; + double pose[6] {}, fps = 0; + double no_detection_timeout = 0; cv::Mat frame, grayscale, color; cv::Matx33d r; #ifdef DEBUG_UNSHARP_MASKING cv::Mat blurred; #endif - std::vector<cv::Point3f> obj_points; - cv::Matx33d intrinsics; + 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 m_r, m_q, rmat = cv::Matx33d::eye(); cv::Vec3d euler; - std::vector<cv::Point3f> roi_points; - cv::Rect last_roi; + std::vector<cv::Point3f> roi_points {4}; + cv::Rect last_roi { 65535, 65535, 0, 0 }; Timer fps_timer, last_detection_timer; - unsigned adaptive_size_pos; - bool use_otsu; + unsigned adaptive_size_pos = 0; + bool use_otsu = false; struct resolution_tuple { @@ -129,7 +130,7 @@ private: int height; }; - static constexpr const int adaptive_sizes[] = + static constexpr inline const int adaptive_sizes[] = { #if defined USE_EXPERIMENTAL_CANNY 3, @@ -142,9 +143,13 @@ private: #endif }; - static constexpr int adaptive_thres = 6; +#if !defined USE_EXPERIMENTAL_CANNY + static constexpr inline int adaptive_thres = 6; +#else + static constexpr inline int adaptive_thres = 3; +#endif - static constexpr const resolution_tuple resolution_choices[] = + static constexpr inline const resolution_tuple resolution_choices[] = { { 640, 480 }, { 320, 240 }, @@ -152,10 +157,11 @@ private: }; #ifdef DEBUG_UNSHARP_MASKING - static constexpr double gauss_kernel_size = 3; + static constexpr inline double gauss_kernel_size = 3; #endif static constexpr inline double timeout = 1; + static constexpr inline double timeout_backoff_c = 4./11; static constexpr inline float size_min = 0.05; @@ -177,7 +183,7 @@ private: settings s; TranslationCalibrator calibrator; QTimer calib_timer; -private slots: +private Q_SLOTS: void doOK(); void doCancel(); void toggleCalibrate(); |