summaryrefslogtreecommitdiffhomepage
path: root/tracker-aruco
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2015-12-03 23:48:43 +0100
committerStanislaw Halik <sthalik@misaki.pl>2015-12-03 23:48:43 +0100
commite6b5a7a710890520ab56691e41f080cf97010e5c (patch)
tree5988f1f6561b7b2113ec2adef1b49c730f76f777 /tracker-aruco
parente98880adc20988fadacc72f2a520bf0a674f135e (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
Diffstat (limited to 'tracker-aruco')
-rw-r--r--tracker-aruco/ftnoir_tracker_aruco.cpp18
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);
}