Algorithm.hpp 577 Bytes
#pragma once

#include <opencv2/core/mat.hpp>

#include "data/hdf5/CVMatLoader.hpp"

class Algorithm {
  public:
	Algorithm() = default;
	Algorithm(const Algorithm &) = default;
	Algorithm(Algorithm &&) noexcept = default;
	Algorithm &operator=(Algorithm &&) noexcept = default;
	Algorithm &operator=(const Algorithm &) = default;

	virtual void setup(const cv::Size &frameSize,
	                   const CVMatLoader &loader) = 0;

	virtual void handleFrame(const cv::Mat &hostFrame,
	                         unsigned long timestamp) = 0;

	virtual ~Algorithm() = default;
};