From 74b260a33eab31c03e03bdebacc726564658c03b Mon Sep 17 00:00:00 2001 From: unknown Date: Fri, 20 Jun 2014 11:31:09 -0430 Subject: [PATCH] Fixed marker rotation bug. Added device orientation slider. --- assets/data/gfx/gui/slider_black.png | Bin 0 -> 3438 bytes jni/marker.cpp | 26 +++++++++++++++++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) create mode 100644 assets/data/gfx/gui/slider_black.png diff --git a/assets/data/gfx/gui/slider_black.png b/assets/data/gfx/gui/slider_black.png new file mode 100644 index 0000000000000000000000000000000000000000..91236e0182788846bcf7f8605a06b646d33ce671 GIT binary patch literal 3438 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 DlZ 0){ + while(rotations > 0){ + for(int r = 0; r < 3; r++){ + point = markers[i].points.at(markers[i].points.size() - 1); + markers[i].points.pop_back(); + markers[i].points.insert(markers[i].points.begin(), point); + } + + rotations--; + } + } + valid_markers.push_back(markers[i]); } } @@ -434,11 +451,13 @@ cv::Mat rotate(cv::Mat in){ * Decode a marker image and return it's code. Returns -1 if the image is * not a valid marker. */ -int decodeMarker(cv::Mat & marker){ +int decodeMarker(cv::Mat & marker, int & rotations){ bool found = false; int code = 0; cv::Mat bits; + rotations = 0; + // Verify that the outer rim of marker cells are all black. for(int y = 0; y < 7; y++){ int inc = (y == 0 || y == 6) ? 1 : 6; @@ -478,6 +497,7 @@ int decodeMarker(cv::Mat & marker){ if(hammDistMarker(bits) != 0){ for(int r = 1; r < 4; r++){ bits = rotate(bits); + rotations++; if(hammDistMarker(bits) != 0) continue; else{ found = true; break;} }