Skip to content
Snippets Groups Projects
Commit fc521aa4 authored by Nicolas Furquez's avatar Nicolas Furquez
Browse files

mejoras en modelador

parent 739a2435
No related branches found
No related tags found
No related merge requests found
......@@ -6,6 +6,7 @@ import org.opencv.core.Mat;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.imgproc.Imgproc;
import uy.edu.fing.chesstrack.modulovision.Calibracion;
......@@ -15,34 +16,24 @@ public class Modelador {
private static final String TAG = "CHESSTRACK::Modelador";
private final int CANT_FILAS= 8;
private final int CANT_SCAQUE = CANT_FILAS* CANT_FILAS;
private final int[][] tablero;
private Mat tablero;
// se cuentan de arrib a abajo y de izquierda a derecha
private final Mat[][] escaques;
private static Modelador instance;
private final Mat[][] escaques;
//private static Modelador instance;
private Modelador(){
tablero = new int[CANT_FILAS][CANT_FILAS];
tablero = Mat.zeros(new Size(8, 8), CvType.CV_8UC1);
escaques = new Mat[CANT_FILAS][CANT_FILAS];
//TODO init tablero
}
public static Modelador getInstance(){
if (instance == null){
instance = new Modelador();
}
return instance;
}
public void dividirTablero(Mat inputFrame){
Rect roi = Calibracion.getInstance().getRectROI();
Mat proccesFrame = inputFrame.submat(roi);
int largo = proccesFrame.rows();
int ancho = proccesFrame.cols();
Imgproc.cvtColor(inputFrame ,inputFrame, Imgproc.COLOR_RGBA2GRAY,4);
int largo = inputFrame.rows();
int ancho = inputFrame.cols();
// obtengo cuanto mide en ancho y largo un escaque
int largoEscaque = (int) Math.floor(largo /(CANT_FILAS+2) );//+1 porque se toma un escaque mas de borde
int largoEscaque = (int) Math.floor(largo /(CANT_FILAS+2) );//+2 porque se toma un escaque mas de borde
int anchoEscaque = (int) Math.floor(ancho /(CANT_FILAS+2) );
Log.i(TAG, "largoEscaque= " + largoEscaque);
Log.i(TAG, "anchoEscaque= " + anchoEscaque);
......@@ -57,6 +48,33 @@ public class Modelador {
}
}
private int getHayFichaEnEscaque(int i, int j){
int ret = 0;
Mat mIntermediateMat = new Mat();
Imgproc.Sobel(escaques[i][j], mIntermediateMat, CvType.CV_8U, 1, 1);
Core.convertScaleAbs(mIntermediateMat, mIntermediateMat, 10, 0);
Imgproc.threshold(mIntermediateMat, mIntermediateMat, 70, 255, Imgproc.THRESH_BINARY);
int cant_pix = mIntermediateMat.cols()*mIntermediateMat.rows();
int cant_pix_white = Core.countNonZero(mIntermediateMat);
if (cant_pix_white > (50) ){
ret = 1;
}
return ret;
}
public Mat getMatrizFichas(Mat frame){
dividirTablero(frame);
tablero = Mat.zeros(new Size(8, 8), CvType.CV_8UC1);
for (int i = 0; i < CANT_FILAS; i++){
for (int j = 0; j < CANT_FILAS; j++){
tablero.put(i, j, getHayFichaEnEscaque(i,j));
}
}
return tablero;
}
public Mat dibujarEscaque(){
Mat tmp = Mat.ones(Calibracion.getInstance().get_sizeFrame(), CvType.CV_8UC4);
Mat subm ; //tmp.submat(new Rect(new Point(0,0) ,escaques[i][j].size()));
......@@ -99,7 +117,7 @@ public class Modelador {
}
public Mat dibujarEscaquesSobel(){
Mat tmp = Mat.zeros(Calibracion.getInstance().get_sizeFrame(), CvType.CV_8UC4);
Mat tmp = Mat.zeros(Calibracion.getInstance().getRectROI().size(), CvType.CV_8UC4);
Mat subm ; //tmp.submat(new Rect(new Point(0,0) ,escaques[i][j].size()));
//escaques[i][j].copyTo(subm);
Mat mIntermediateMat = new Mat();
......@@ -110,8 +128,8 @@ public class Modelador {
pos_x = (int) (escaques[i][j].size().width*i);
pos_y = (int) (escaques[i][j].size().height*j);
subm = tmp.submat(new Rect(new Point(pos_x,pos_y) ,escaques[i][j].size()));
Imgproc.cvtColor(escaques[i][j] ,mIntermediateMat, Imgproc.COLOR_RGBA2GRAY,4);
Imgproc.Sobel(mIntermediateMat, mIntermediateMat, CvType.CV_8U, 1, 1);
//Imgproc.cvtColor(escaques[i][j] ,mIntermediateMat, Imgproc.COLOR_RGBA2GRAY,4);
Imgproc.Sobel(escaques[i][j], mIntermediateMat, CvType.CV_8U, 1, 1);
Core.convertScaleAbs(mIntermediateMat, mIntermediateMat, 10, 0);
Imgproc.threshold(mIntermediateMat, mIntermediateMat, 70, 255, Imgproc.THRESH_BINARY);
int cant_pix = mIntermediateMat.cols()*mIntermediateMat.rows();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment