#pragma once

#include "stdafx.h"
#include "ReferenceProc.h"
#include "MRegressionRGB.h"
#include "Tracking.h"
#include "ProcessList.h"


#define PARAM_FILE		"Info.csv"
#define GOUT_DIR		".\\output"
#define LOUT_DIR		"%s\\output"
#define LOUT_CVFILE		LOUT_DIR "\\trac%04d.jpg"
#define IMAGE_FILE		"Shot%04d.bmp"
#define ANALYSIS_FILE	"analysis.csv"
#define TRACK_POINTS	5	// 舌形状 追跡ポイント数
#define PROC_FRAMES_S	31	// 処理枚数（短）
#define PROC_FRAMES_L	301	// 処理枚数（長）
#define FRAME_REF_CONVERT_DIM	4	// フレームから参照へ色変換する次数

class CAnalysis
{
private:
// パラメータの宣言
	CReferenceProc *m_RefProc;
	CDetectCasmatch *m_Casmatch;
	CTracking *m_Tracker;
	CvPoint m_InitTrack[TRACK_POINTS];	// 舌形状 初期座標
	int m_NumProcFrames;
	int m_FrameScale;
	CvScalar m_ROILabT1[4];
	CvScalar m_ROILabT2[4];
	CvScalar m_ROILabT3[4];
	CvScalar m_ROILabT4[4];

// メソッドの宣言
private:
	bool GlobalInit();
	bool ReadProcList();
	int MeasurementProc(const char *path, const char *file, 
		CProcessList &pl);
	int FrameProc(const char *inputfile, const char *path, 
		const int frame, FILE *fpLog, CProcessList &pl);
	int ReadParam(const char *path);
	int GetNumFrames(const char *path, const char *file);

public:
	CAnalysis(void);
	~CAnalysis(void);
	bool GlobalProc();
};
