diff options
-rw-r--r-- | ftnoir_tracker_aruco/ftnoir_tracker_aruco.cpp | 13 | ||||
-rw-r--r-- | ftnoir_tracker_aruco/ftnoir_tracker_aruco.h | 2 |
2 files changed, 11 insertions, 4 deletions
diff --git a/ftnoir_tracker_aruco/ftnoir_tracker_aruco.cpp b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.cpp index fd8a8ce1..87c5315e 100644 --- a/ftnoir_tracker_aruco/ftnoir_tracker_aruco.cpp +++ b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.cpp @@ -203,6 +203,12 @@ void Tracker::run() auto tm = cv::getTickCount(); cv::Mat grayscale; + { + std::vector<cv::Mat> tmp; + cv::split(color, tmp); + // red only, best on CCD, also artifacts on blue ps3eye + grayscale = tmp[2]; + } cv::cvtColor(color, grayscale, cv::COLOR_BGR2GRAY); const int scale = frame.cols > 480 ? 2 : 1; @@ -221,7 +227,7 @@ void Tracker::run() std::vector< aruco::Marker > markers; const double size_min = 0.04; - const double size_max = 0.38; + const double size_max = 0.28; bool roi_valid = false; @@ -229,6 +235,7 @@ void Tracker::run() { detector.setMinMaxSize(std::max(0.01, size_min * grayscale.cols / last_roi.width), std::min(1.0, size_max * grayscale.cols / last_roi.width)); + if (detector.detect(grayscale(last_roi), markers, cv::Mat(), cv::Mat(), -1, false), markers.size() == 1 && markers[0].size() == 4) { @@ -299,7 +306,7 @@ void Tracker::run() cv::Vec3d rvec, tvec; - cv::solvePnP(obj_points, m, intrinsics, dist_coeffs, rvec, tvec, false, cv::P3P); + cv::solvePnP(obj_points, m, intrinsics, dist_coeffs, rvec, tvec, false, cv::ITERATIVE); std::vector<cv::Point2f> roi_projection(4); @@ -324,7 +331,7 @@ void Tracker::run() { cv::Mat rvec_, tvec_; - cv::solvePnP(obj_points, m, intrinsics, dist_coeffs, rvec_, tvec_, false, cv::P3P); + cv::solvePnP(obj_points, m, intrinsics, dist_coeffs, rvec_, tvec_, false, cv::ITERATIVE); tvec = tvec_; } diff --git a/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h index 3d37dacd..090cf478 100644 --- a/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h +++ b/ftnoir_tracker_aruco/ftnoir_tracker_aruco.h @@ -43,7 +43,7 @@ struct settings { class Tracker : protected QThread, public ITracker { Q_OBJECT - static constexpr double c_search_window = 2.2; + static constexpr double c_search_window = 2.65; public: Tracker(); ~Tracker() override; |