#pragma once
//#define EIGEN_USE_MKL_ALL
//#define EIGEN_VECTORIZE_SSE4_2
//#include <mkl.h>
// 本地方法

#include <iostream>
#include <Eigen/Core>
#include <Eigen/Dense>
#include <time.h>
#include <boost/filesystem.hpp>
#include <omp.h>
#include "baseTool.h"
#include "simptsn.h"
#include "SateOrbit.h"
#include <gdal_utils.h>
#include <opencv2/core.hpp>
#include <opencv2/opencv.hpp>
#include <opencv2/core/eigen.hpp>

using namespace std;
using namespace Eigen;
class ImageMatch
{
public:
	int gdal2JPG(std::string gdal_path,std::string jpg_path,int band_ids);
	Eigen::MatrixXd ImageMatch_ori_sim(std::string ori_power_path, std::string sim_sum_path, int roughSize=500, int Precise=300,int scale=5, int searchSize=1000,int roughStep=400 ,int preciseStep=300);
	Eigen::MatrixXd CreateMatchModel(Eigen::MatrixXd offsetXY_matrix);

	Eigen::MatrixXd correctMatchModel(Eigen::MatrixXd r, Eigen::MatrixXd c);

	int outMatchModel(std::string matchmodel_path);
	//参数
	Eigen::MatrixXd offsetXY_matrix;
	Eigen::MatrixXd match_model;
};

cv::Mat openJPG(std::string jpg_path);
cv::Mat resampledMat(cv::Mat& templet, int targetSize, int interpolation = cv::INTER_AREA);
