Program Listing for File FloatImage.h

Return to documentation for file (include/apriltag_mit/AprilTags/FloatImage.h)

#ifndef APRILTAGS_FLOATIMAGE_H_
#define APRILTAGS_FLOATIMAGE_H_

#include <opencv2/core/core.hpp>

namespace AprilTags {

class FloatImage {
 public:
  FloatImage() = default;
  FloatImage(const cv::Mat& image);
  FloatImage(int width, int height);
  FloatImage& operator=(const FloatImage& other);

  inline float get(int x, int y) const { return image_.at<float>(y, x); }
  inline float get(int idx) const { return image_.at<float>(idx); }
  inline void set(int x, int y, float v) { image_.at<float>(y, x) = v; }

  int width() const { return image_.cols; }
  int height() const { return image_.rows; }
  int num_pixels() const { return image_.cols * image_.rows; }
  cv::Mat& mat() { return image_; }
  const cv::Mat& mat() const { return image_; }

  void FilterGaussian(int ksize, float sigma);

 private:
  cv::Mat image_;
};

bool IsInsideImage(int x, int y, int w, int h);
bool IsInsideImage(int x, int y, const FloatImage& image);

}  // namespace AprilTags

#endif  // APRILTAGS_FLOATIMAGE_H_