diff options
| author | Stanislaw Halik <sthalik@misaki.pl> | 2015-12-03 23:48:43 +0100 | 
|---|---|---|
| committer | Stanislaw Halik <sthalik@misaki.pl> | 2015-12-03 23:48:43 +0100 | 
| commit | e6b5a7a710890520ab56691e41f080cf97010e5c (patch) | |
| tree | 5988f1f6561b7b2113ec2adef1b49c730f76f777 | |
| parent | e98880adc20988fadacc72f2a520bf0a674f135e (diff) | |
aruco: use a single standard box size
Higher box sizes use more CPU due to the need to convolve a lot.
It looks fine with both high and low exposure on both Logitech C525 and
PS3 Eye webcams.
Issue: #273
| -rw-r--r-- | tracker-aruco/ftnoir_tracker_aruco.cpp | 18 | 
1 files changed, 2 insertions, 16 deletions
| diff --git a/tracker-aruco/ftnoir_tracker_aruco.cpp b/tracker-aruco/ftnoir_tracker_aruco.cpp index 32c81694..2b38bb2f 100644 --- a/tracker-aruco/ftnoir_tracker_aruco.cpp +++ b/tracker-aruco/ftnoir_tracker_aruco.cpp @@ -129,10 +129,6 @@ void Tracker::run()      auto freq = cv::getTickFrequency();      auto last_time = cv::getTickCount();      double cur_fps = 0; -    std::vector<int> box_sizes { 5, 9, 13 }; -    int box_idx = 0; -    double failed = 0; -    const double max_failed = .8;      cv::Vec3d rvec, tvec;      cv::Mat intrinsics = cv::Mat::eye(3, 3, CV_32FC1);      cv::Mat dist_coeffs = cv::Mat::zeros(5, 1, CV_32FC1); @@ -146,12 +142,12 @@ void Tracker::run()              if (!camera.read(color))                  continue;          } -        static constexpr int thres_param2 = 5;          cv::Mat grayscale;          cv::cvtColor(color, grayscale, cv::COLOR_RGB2GRAY);          const int scale = grayscale.cols > 480 ? 2 : 1; -        detector.setThresholdParams(box_sizes[box_idx], thres_param2); +        // param 2 ignored for Otsu thresholding. it's required to use our fork of Aruco. +        detector.setThresholdParams(5, -1);          static constexpr double pi = 3.1415926f;          const int w = grayscale.cols, h = grayscale.rows; @@ -188,7 +184,6 @@ void Tracker::run()              if (detector.detect(grayscale_, markers, cv::Mat(), cv::Mat(), -1, false),                  markers.size() == 1 && markers[0].size() == 4)              { -                failed = std::max(0., failed - dt*.25);                  auto& m = markers.at(0);                  for (int i = 0; i < 4; i++)                  { @@ -202,15 +197,6 @@ void Tracker::run()          if (!roi_valid)          { -            failed += dt; -            if (failed > max_failed) -            { -                box_idx++; -                box_idx %= box_sizes.size(); -                qDebug() << "aruco: box size now" << box_sizes[box_idx]; -                failed = 0; -            } -            detector.setThresholdParams(box_sizes[box_idx], thres_param2);              detector.setMinMaxSize(size_min, size_max);              detector.detect(grayscale, markers, cv::Mat(), cv::Mat(), -1, false);          } | 
