Program Listing for File Quad.h
↰ Return to documentation for file (include/apriltag_mit/AprilTags/Quad.h
)
#ifndef APRILTAGS_QUAD_H_
#define APRILTAGS_QUAD_H_
#include <opencv2/core/core.hpp>
#include "apriltag_mit/AprilTags/GrayModel.h"
#include "apriltag_mit/AprilTags/FloatImage.h"
#include "apriltag_mit/AprilTags/TagCodes.h"
namespace AprilTags {
class FloatImage;
class Segment;
class Quad {
public:
static const int kMinEdgeLength = 6;
static constexpr float kMaxQuadAspectRatio = 32.0;
Quad(const std::vector<cv::Point2f>& p);
cv::Point2f Interpolate(const cv::Point2f& p) const;
cv::Point2f Interpolate01(const cv::Point2f& p) const;
std::vector<cv::Point2f> p;
std::vector<Segment*> segments;
float obs_perimeter;
static void Search(std::vector<Segment*>& path, Segment& parent, int depth,
std::vector<Quad>& quads);
code_t ToTagCode(const FloatImage& image, unsigned dimension_bits,
unsigned black_border) const;
private:
GrayModel MakeGrayModel(const FloatImage& image, unsigned length_bits) const;
code_t DecodePayload(const FloatImage& image, const GrayModel& model,
unsigned dimension_bits, unsigned black_border) const;
cv::Point2f p0_, p3_, p01_, p32_;
};
} // namespace AprilTags
#endif // APRILTAGS_QUAD_H_