Program Listing for File TagDetection.h
↰ Return to documentation for file (include/apriltag_mit/AprilTags/TagDetection.h
)
#ifndef APRILTAGS_TAGDETECTION_H_
#define APRILTAGS_TAGDETECTION_H_
#include <vector>
#include <opencv2/core/core.hpp>
#include "apriltag_mit/AprilTags/TagCodes.h"
namespace AprilTags {
using Pointf = std::pair<float, float>;
struct TagDetection {
TagDetection() = default;
TagDetection(unsigned id, bool good, code_t obs_code, code_t code,
unsigned hamming_distance, unsigned num_rotations)
: id(id),
good(good),
obs_code(obs_code),
code(code),
hamming_distance(hamming_distance),
num_rot(num_rotations) {
p.resize(4);
}
unsigned id;
bool good = false;
code_t obs_code;
code_t code;
unsigned hamming_distance;
unsigned num_rot;
cv::Point2f cxy;
std::vector<cv::Point2f> p;
float obs_perimeter;
cv::Matx33f H;
cv::Point2f Project(const cv::Point2f& p) const;
void RotatePoints(const std::vector<cv::Point2f>& quad_p);
bool OverlapsTooMuch(const TagDetection& other) const;
void ScaleTag(float scale);
};
float TagPerimeter(const std::vector<cv::Point2f>& p);
float TagRadius(const std::vector<cv::Point2f>& p);
cv::Matx33f CalcHomography(const std::vector<cv::Point2f>& p);
} // namespace AprilTags
#endif // APRILTAGS_TAGDETECTION_H_