diff --git a/components/operators/src/aruco.cpp b/components/operators/src/aruco.cpp index 18beb6638d3772f7aae44682f60b549ec386d0dc..b8f54eb4c254fcca166b2c2f48cc46f360a1adf5 100644 --- a/components/operators/src/aruco.cpp +++ b/components/operators/src/aruco.cpp @@ -1,6 +1,9 @@ #include "ftl/operators/detectandtrack.hpp" #include "ftl/codecs/transformation.hpp" +#define LOGURU_REPLACE_GLOG 1 +#include <loguru.hpp> + using ftl::operators::ArUco; using ftl::rgbd::Frame; @@ -18,18 +21,22 @@ ArUco::ArUco(ftl::Configurable *cfg) : ftl::operators::Operator(cfg) { params_ = cv::aruco::DetectorParameters::create(); debug_ = cfg->value("debug", false); - estimate_pose_ = cfg->value("estimate_pose", false); - auto marker_size = cfg->get<float>("marker_size"); - if (!marker_size || (*marker_size < 0.0f)) { - marker_size_ = 0.0; - estimate_pose_ = false; - } - else { - marker_size_ = *marker_size; - } + //estimate_pose_ = cfg->value("estimate_pose", false); + //auto marker_size = cfg->get<float>("marker_size"); + //if (!marker_size || (*marker_size <= 0.0f)) { + // marker_size_ = 0.1f; + // estimate_pose_ = false; + //} + //else { + // marker_size_ = *marker_size; + //} channel_in_ = Channel::Colour; channel_out_ = Channel::Transforms; + + cfg->on("dictionary", [this,cfg](const ftl::config::Event &e) { + dictionary_ = cv::aruco::getPredefinedDictionary(cfg->value("dictionary", 0)); + }); } bool ArUco::apply(Frame &in, Frame &out, cudaStream_t stream) { @@ -38,6 +45,10 @@ bool ArUco::apply(Frame &in, Frame &out, cudaStream_t stream) { Frame *inptr = ∈ Frame *outptr = &out; + estimate_pose_ = config()->value("estimate_pose", false); + debug_ = config()->value("debug", false); + marker_size_ = config()->value("marker_size",0.1f); + job_ = std::move(ftl::pool.push([this,inptr,outptr,stream](int id) { Frame &in = *inptr; Frame &out = *outptr;