package uy.edu.fing.chesstrack.modulovision;

import java.util.ArrayList;
import java.util.List;

import org.opencv.core.Mat;

import uy.edu.fing.chesstrack.modulovision.imgproc.Homografia;
import uy.edu.fing.chesstrack.modulovision.imgproc.ImgProcInterface;
import android.util.Log;

public class Adquisicion   {
	private static final String TAG = "CHESSTRACK::Adquisicion";

	List<ImgProcInterface> _listProc;

	public Adquisicion() throws Exception {
		super();
		Log.i(TAG, "Cargado....");
		_listProc = new ArrayList<ImgProcInterface>();

		_listProc.add(new Homografia());
		//_listProc.add(new EcualizarImagen());
	}

	/**
	 * PRocesa el frame pasado por parametro
	 * @param inputPicture
	 * @return
	 * ver http://dsp.stackexchange.com/questions/2805/how-does-opencv-find-chessboard-corners
	 * http://www.cvg.ethz.ch/teaching/2012fall/cvl/Tutorial-OpenCV.pdf
	 */
	public synchronized Mat processFrame(Mat inputPicture) {
		Log.i(TAG, "processFrame inicia");
		Mat tempImg = inputPicture;
		for (ImgProcInterface proc: _listProc){
			tempImg = proc.procesarImagen(tempImg);
		}
		return tempImg;
	}
}