#ifndef DETECTION_CLASSES_H
#define DETECTION_CLASSES_H

#include <opencv2/opencv.hpp>
#include "ellipserefine.hpp"

// A group of points to be manually initialized 
class Manual_ROI {
	unsigned int pnt_num;
public:
	std::vector<cv::Point2f> pnt_ROI;
	int current_idx;
	Manual_ROI();
	~Manual_ROI();
	void Manual_ROI_init(int user_pnt_num);
};


// Each single point
class myKeyPnt {
	int window_size_h;
	cv::Rect window_info; // xmin, xl, ymin, yl

public:
	
	unsigned int keypnt_idx;
	cv::Point2f* keypnt;
	myKeyPnt();
	~myKeyPnt();

	void configKeyPnt(int usr_window_size_h, unsigned int usr_idx, cv::Point2f *pntInfo);
	void ROI_range_casting(int row, int col);
	int detectROI(cv::Mat *im_bgr, bool DEBUG);
};

#endif
