diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java index 38f73e3d94b87dffcf56aef10819a0799a6ae8b6..8a69c27ab7226cfeb04c6af6450580b858253db4 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/ChessTrackActivity.java @@ -38,6 +38,7 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener + " Aylen Ricca - Nicolas Furquez\n" + "--------------------------------------------------------------------------\n"; + // private CameraBridgeViewBase mOpenCvCameraView; private CameraBridgeViewBase mOpenCvCameraView; private Adquisicion adq; @@ -84,6 +85,7 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.chess_track_layout); mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); mOpenCvCameraView.setCvCameraViewListener(this); + Modelador.getInstance(); try { isUsed = false; @@ -150,9 +152,9 @@ public class ChessTrackActivity extends Activity implements CvCameraViewListener int port = Integer.parseInt(value.toString()); Log.i(TAG,"PORT=" + port); - ClientCommunication = Client.getInstance(); - ClientCommunication.EstablishConnection(ip, port); - ClientCommunication.SendData(welcomeMSG); + //ClientCommunication = Client.getInstance(); + //ClientCommunication.EstablishConnection(ip, port); + //ClientCommunication.SendData(welcomeMSG); } } }); diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java index fb3abdc1a107b886b6acc3fc3ed1e810483a755c..f0cd93c45a6b1580f7c2af83409276c9b208c4f5 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/Adquisicion.java @@ -25,10 +25,10 @@ public class Adquisicion { Log.i(TAG, "Cargado...."); listProc = new ArrayList<ImgProcInterface>(); - //listProc.add( new Homografia()); + listProc.add( new Homografia()); //listProc.add( new EcualizarImagen()); //listProc.add( new SustraccionDeFondo()); - listProc.add( new BackgroundSupress()); + //listProc.add( new BackgroundSupress()); } diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/Homografia.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/Homografia.java index 31154b7d6f18458f01e5059d9d2be2b2c2c4e63e..63830f24c1a84e09d8964d217ae3fd4a4bb2509f 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/Homografia.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/Homografia.java @@ -9,6 +9,7 @@ import org.opencv.core.Size; import org.opencv.imgproc.Imgproc; import uy.edu.fing.chesstrack.modulovision.Calibracion; +import android.util.Log; public class Homografia implements ImgProcInterface { @@ -23,42 +24,26 @@ public class Homografia implements ImgProcInterface { if (vertices != null){ Mat src = new Mat(4,1,CvType.CV_32FC2); Mat dst = new Mat(4,1,CvType.CV_32FC2); - Point p1,p2,p3,p4; - p1 = vertices.toList().get(0); - p2 = vertices.toList().get(6); - p3 = vertices.toList().get(42); - p4 = vertices.toList().get(48); + offset = (media/7); + Point p1, p2, p3, p4; + Point[] ret = getBestPoints(vertices, Calibracion.getInstance().getImagenCalibrada().size()); + Log.i(TAG, "coso= " + ret); + p1 = ret[0]; + p2 = ret[1]; + p3 = ret[2]; + p4 = ret[3]; double d17 = Math.sqrt(Math.pow((p1.x- p2.x),2) + Math.pow((p1.y- p2.y),2)); - double d749 = Math.sqrt(Math.pow((p2.x- p4.x),2) + Math.pow((p2.y- p4.y),2)); - double d143 = Math.sqrt(Math.pow((p1.x- p3.x),2) + Math.pow((p1.y- p3.y),2)); - double d4349 = Math.sqrt(Math.pow((p3.x- p4.x),2) + Math.pow((p3.y- p4.y),2)); + double d749 = Math.sqrt(Math.pow((p2.x- p3.x),2) + Math.pow((p2.y- p3.y),2)); + double d143 = Math.sqrt(Math.pow((p3.x- p4.x),2) + Math.pow((p3.y- p4.y),2)); + double d4349 = Math.sqrt(Math.pow((p4.x- p1.x),2) + Math.pow((p4.y- p1.y),2)); media = (int) Math.floor( Math.round((d17+d749+d143+d4349)/4)); offset = 2*(media/7); - // offset = (media/7); - // Point p1, p2, p3, p4; - // Point[] ret = getBestPoints(vertices, Calibracion.getInstance().getImagenCalibrada().size()); - // Log.i(TAG, "coso= " + ret); - // p1 = ret[0]; - // p2 = ret[1]; - // p3 = ret[2]; - // p4 = ret[3]; - // - // double corner_width = Math.abs(Math.sqrt(Math.pow((p1.x- p2.x),2) + Math.pow((p1.y- p2.y),2))/7); - // double corner_height = corner_width; - // - // double real_left_x = 0 + corner_width; - // double real_right_x = 0 + 9 * corner_width; - // double real_top_y = 0 + corner_height; - // double real_bottom_y = 0 + 9 * corner_height; + src.put(0,0 ,(int)p1.x,(int)p1.y, (int)p2.x,(int)p2.y, (int)p3.x,(int)p3.y, (int)p4.x,(int)p4.y); - // dst.put(0,0, real_left_x ,real_top_y ,real_right_x ,real_top_y, real_right_x,real_bottom_y, real_left_x,real_bottom_y ); - dst.put(0,0, offset,offset ,offset+media,offset , offset,offset+media , offset+media,offset+media ); - // Log.i(TAG, "corner_width= " + corner_width); - // Log.i(TAG, "corner_height = " + corner_height); + dst.put(0,0, offset,offset ,offset+media,offset , offset+media,offset+media, offset,offset+media ); // EL offset es casi el tamaño de una celda - //rectPOI = new Rect(new Point(0,0), new Point(9*corner_width,9*corner_height) ); rectPOI = new Rect(new Point(0,0), new Point(2*offset+media,2*offset+media) ); Calibracion.getInstance().setRectPOI(rectPOI); matrizTransformada = Imgproc.getPerspectiveTransform(src,dst); @@ -72,16 +57,14 @@ public class Homografia implements ImgProcInterface { @Override public Mat procesarImagen(Mat inputFrame) { - Imgproc.warpPerspective(inputFrame,inputFrame, matrizTransformada, inputFrame.size(),(Imgproc.INTER_LINEAR | Imgproc.CV_WARP_FILL_OUTLIERS)); + Log.i(TAG, "before"); + Imgproc.warpPerspective(inputFrame,inputFrame, matrizTransformada, inputFrame.size()); Mat subMat = inputFrame.submat(rectPOI); Mat tmp = Mat.zeros(inputFrame.size(), CvType.CV_8UC4); Mat matTMP = tmp.submat(rectPOI); subMat.copyTo(matTMP); + Log.i(TAG, "after"); return tmp; - - //Core.circle(inputFrame, new Point(offset,offset), offset, new Scalar(0,0 , 255, 255)); - //Core.circle(inputFrame, new Point(offset,offset), 5, new Scalar(0,255, 0, 255)); - // return inputFrame; } private Point[] getBestPoints(MatOfPoint2f vertices, Size tamanio){ @@ -91,9 +74,7 @@ public class Homografia implements ImgProcInterface { double betst_dist = Double.MAX_VALUE; Point aux = new Point(0,0); for(Point pt : vertices.toList()){ - // dx = pt.x-aux.x; - // dy= pt.y -aux.y; - // d = dx*dx + dy*dy; + d = Math.sqrt(Math.pow((pt.x- aux.x),2) + Math.pow((pt.y- aux.y),2)); if (d < betst_dist){ betst_dist = d; @@ -104,9 +85,6 @@ public class Homografia implements ImgProcInterface { betst_dist = Double.MAX_VALUE; aux = new Point(tamanio.width,0); for(Point pt : vertices.toList()){ - // dx = pt.x - aux.x; - // dy= pt.y -aux.y; - // d = dx*dx + dy*dy; d = Math.sqrt(Math.pow((pt.x- aux.x),2) + Math.pow((pt.y- aux.y),2)); if (d < betst_dist){ betst_dist = d; @@ -117,9 +95,6 @@ public class Homografia implements ImgProcInterface { betst_dist = Double.MAX_VALUE; aux = new Point(tamanio.width,tamanio.height); for(Point pt : vertices.toList()){ - // dx = pt.x-aux.x; - // dy= pt.y -aux.y; - // d = dx*dx + dy*dy; d = Math.sqrt(Math.pow((pt.x- aux.x),2) + Math.pow((pt.y- aux.y),2)); if (d < betst_dist){ betst_dist = d; @@ -130,9 +105,6 @@ public class Homografia implements ImgProcInterface { betst_dist = Double.MAX_VALUE; aux = new Point(0,tamanio.height); for(Point pt : vertices.toList()){ - // dx = pt.x-aux.x; - // dy= pt.y -aux.y; - // d = dx*dx + dy*dy; d = Math.sqrt(Math.pow((pt.x- aux.x),2) + Math.pow((pt.y- aux.y),2)); if (d < betst_dist){ betst_dist = d;