Skip to content

Commit 48c5dc2

Browse files
authored
Merge pull request #1931 from rolalaro/fix_apriltag_json_conf
Fix vpDetectorAprilTag configuration using JSON
2 parents ea0b13a + 5fcc8a5 commit 48c5dc2

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

modules/detection/include/visp3/detection/vpDetectorAprilTag.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -450,6 +450,11 @@ class VISP_EXPORT vpDetectorAprilTag : public vpDetectorBase
450450
const vpColor &color = vpColor::none, unsigned int thickness = 1) const;
451451

452452
float getAprilTagDecisionMarginThreshold() const;
453+
inline vpAprilTagFamily getAprilTagFamily() const
454+
{
455+
return m_tagFamily;
456+
}
457+
453458
int getAprilTagHammingDistanceThreshold() const;
454459
bool getPose(size_t tagIndex, double tagSize, const vpCameraParameters &cam, vpHomogeneousMatrix &cMo,
455460
vpHomogeneousMatrix *cMo2 = nullptr, double *projError = nullptr, double *projError2 = nullptr);

modules/detection/src/tag/vpDetectorAprilTag.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1693,7 +1693,14 @@ void to_json(nlohmann::json &j, const vpDetectorAprilTag &detector)
16931693

16941694
void from_json(const nlohmann::json &j, vpDetectorAprilTag &detector)
16951695
{
1696-
detector.setAprilTagFamily(vpDetectorAprilTag::tagFamilyFromString(j.value("tag_family", vpDetectorAprilTag::tagFamilyToString(detector.m_tagFamily)))); // First raw because it allocates m_impl
1696+
std::string curr_family = vpDetectorAprilTag::tagFamilyToString(detector.m_tagFamily);
1697+
if (j.contains("tag_family")) {
1698+
std::string conf_family = j.at("tag_family");
1699+
detector.setAprilTagFamily(vpDetectorAprilTag::tagFamilyFromString(conf_family)); // First raw because it allocates m_impl
1700+
}
1701+
else {
1702+
detector.setAprilTagFamily(vpDetectorAprilTag::tagFamilyFromString(curr_family)); // First raw because it allocates m_impl
1703+
}
16971704
bool debug = false;
16981705
double decodeSharpening = 0.;
16991706
bool hasTagDetector = detector.m_impl->getDebugFlag(debug);
@@ -2174,6 +2181,7 @@ void vpDetectorAprilTag::setAprilTagFamily(const vpAprilTagFamily &tagFamily)
21742181
bool zAxis = m_impl->getZAlignedWithCameraAxis();
21752182

21762183
delete m_impl;
2184+
m_tagFamily = tagFamily;
21772185
m_impl = new Impl(tagFamily, m_poseEstimationMethod);
21782186
m_impl->setAprilTagDecodeSharpening(decodeSharpening);
21792187
m_impl->setNbThreads(nThreads);

0 commit comments

Comments
 (0)