#ifndef MYTARGET_H
#define MYTARGET_H

#include <iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/opencv.hpp>
#include <fstream>

#include "Detection_classes.h"

class MyTarget {

public:
	//// Target info
	//const int pnt_num = 8;
	//std::vector<myKeyPnt> keyPnts = std::vector<myKeyPnt>(pnt_num);
	//std::vector<cv::Point2f> keyPnts_img = std::vector<cv::Point2f>(pnt_num);
	//// prior knowledge of features
	//std::vector<cv::Point3f> target_obj = { cv::Point3f(-14.09,14.09,0.), cv::Point3f(0., 14.09, 0.), cv::Point3f(14.09, 14.09, 0.), cv::Point3f(14.09, 0., 0.), cv::Point3f(14.09, -14.09, 0.), cv::Point3f(0., -14.09, 0.), cv::Point3f(-14.09, -14.09, 0.), cv::Point3f(-14.09, 0., 0.) };
	//std::vector<cv::Point3f> target_axis = { cv::Point3f(0., 0., 0.), cv::Point3f(20., 0., 0.),cv::Point3f(0., 20., 0.),cv::Point3f(0., 0., 20.) }; // o-x-y-z axes, mm
	//unsigned int num_active_kpt = pnt_num;

	// Target info
	int pnt_num = 8;
	std::vector<myKeyPnt> keyPnts;
	std::vector<cv::Point2f> keyPnts_img;
	// prior knowledge of features
	std::vector<cv::Point3f> target_obj;
	std::vector<cv::Point3f> target_axis = { cv::Point3f(0., 0., 0.), cv::Point3f(20., 0., 0.),cv::Point3f(0., 20., 0.),cv::Point3f(0., 0., 20.) }; // o-x-y-z axes, mm; // o-x-y-z axes, mm
	unsigned int num_active_kpt;

	MyTarget();
	~MyTarget();

	void initTarget8Dots(float half_l);
	void initTarget_readfile(std::string file_name);
};

#endif
