From d1f1fd11bb1f4298d6b8b9fd33aee02e21830e1e Mon Sep 17 00:00:00 2001 From: Aylen Ricca <aricca@fing.edu.uy> Date: Wed, 23 Jul 2014 19:54:07 -0300 Subject: [PATCH] on sample add to write img-clear board- & on android added debug to client from supressBackground --- .../imgproc/BackgroundSupress.java | 35 +++++++++++++++---- samples/SubsBackground.cpp | 16 +++++++-- 2 files changed, 42 insertions(+), 9 deletions(-) diff --git a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/BackgroundSupress.java b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/BackgroundSupress.java index 7ff5a30..419eb09 100644 --- a/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/BackgroundSupress.java +++ b/ProyectoAndroid/ChessTrack/src/uy/edu/fing/chesstrack/modulovision/imgproc/BackgroundSupress.java @@ -17,6 +17,7 @@ import org.opencv.video.BackgroundSubtractorMOG; import org.opencv.video.BackgroundSubtractorMOG2; import org.opencv.imgproc.*; +import uy.edu.chesstrack.communication.Client; import android.graphics.SumPathEffect; import android.media.AudioManager; import android.media.ToneGenerator; @@ -26,12 +27,16 @@ import android.util.Log; public class BackgroundSupress implements ImgProcInterface { private static final String TAG = "CHESSTRACK::BackgroundSupress"; + private static int e = 0; private final Mat fgMaskMOG; - private final Mat fgMaskMOG2; + private Mat fgMaskMOG2; private final Mat morphKernel; private final BackgroundSubtractorMOG pMOG; - private final BackgroundSubtractorMOG2 pMOG2; - private final List<MatOfPoint> contours; + private BackgroundSubtractorMOG2 pMOG2; + //private final List<MatOfPoint> contours; + private Client communicator; + private int estadoANTERIOR = 0; + private int estadoACTUAL = 0; public BackgroundSupress() { super(); @@ -41,7 +46,9 @@ public class BackgroundSupress implements ImgProcInterface { pMOG = new BackgroundSubtractorMOG(); //MOG approach pMOG2 = new BackgroundSubtractorMOG2(); //MOG approach Log.i(TAG, "at background supress constructor"); - contours = new ArrayList<MatOfPoint>(); + //contours = new ArrayList<MatOfPoint>(); + + communicator = Client.getInstance(); } @Override @@ -62,8 +69,8 @@ public class BackgroundSupress implements ImgProcInterface { Imgproc.threshold(fgMaskMOG2, fgMaskMOG2, 200, 255, Imgproc.THRESH_BINARY); Log.i(TAG, "Apply threshold"); - Imgproc.dilate(fgMaskMOG2, fgMaskMOG2, morphKernel); - Log.i(TAG, "Apply dilate"); + //Imgproc.dilate(fgMaskMOG2, fgMaskMOG2, morphKernel); + //Log.i(TAG, "Apply dilate"); Scalar suma = Core.sumElems(fgMaskMOG2); Log.i(TAG, "SUMA = " + suma); @@ -87,12 +94,28 @@ public class BackgroundSupress implements ImgProcInterface { }*/ if (suma.val[0] > 100000){ + estadoANTERIOR = estadoACTUAL; + estadoACTUAL = 1; + Log.i(TAG, "MANO !!!"); + communicator.SendData("1\n"); Core.putText(fgMaskMOG2, "MANO !!!", new Point(50, 50),Core.FONT_HERSHEY_SIMPLEX, 0.8 , new Scalar(255,255,0)); // ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50); // toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms } else { + estadoANTERIOR = estadoACTUAL; + if (estadoANTERIOR == 1){ + // estado transicion + + estadoACTUAL = 3; + } + if (estadoANTERIOR == 3){ + // estado estable + estadoACTUAL = 2; + pMOG2 = new BackgroundSubtractorMOG2(); //MOG2 approach + } Log.i(TAG, "ESTABLE !!!"); + communicator.SendData("0\n"); Core.putText(fgMaskMOG2, "ESTABLE !!!", new Point(50, 50),Core.FONT_HERSHEY_SIMPLEX, 0.5 , new Scalar(255,255,0)); } diff --git a/samples/SubsBackground.cpp b/samples/SubsBackground.cpp index 999950d..fd2d0ab 100644 --- a/samples/SubsBackground.cpp +++ b/samples/SubsBackground.cpp @@ -66,7 +66,7 @@ int main(int argc, char* argv[]) //create GUI windows namedWindow("Frame"); - namedWindow("FG Mask MOG"); + //namedWindow("FG Mask MOG"); namedWindow("FG Mask MOG 2"); //create Background Subtractor objects @@ -99,6 +99,10 @@ int main(int argc, char* argv[]) void processVideo(char* videoFilename) { int estadoANTERIOR = 0; int estadoACTUAL = 0; + int c = 0; + char buffer [15]; + + //create the capture object VideoCapture capture(videoFilename); if(!capture.isOpened()){ @@ -142,7 +146,7 @@ void processVideo(char* videoFilename) { // cerr << suma.val[0] << endl; - if (suma.val[0] > 1000000){ + if (suma.val[0] > 1250000){ // estado oclusion estadoANTERIOR = estadoACTUAL; estadoACTUAL = 1; @@ -158,6 +162,12 @@ void processVideo(char* videoFilename) { if (estadoANTERIOR == 3){ // estado estable estadoACTUAL = 2; + imshow("ESTABLE", frame); + + int b = sprintf (buffer, "tablero%d.png", c); + imwrite(buffer, frame); + c++; + pMOG= new BackgroundSubtractorMOG(); //MOG approach pMOG2 = new BackgroundSubtractorMOG2(); //MOG2 approach } @@ -184,7 +194,7 @@ void processVideo(char* videoFilename) { //show the current frame and the fg masks imshow("Frame", frame); - imshow("FG Mask MOG", fgMaskMOG); + // imshow("FG Mask MOG", fgMaskMOG); imshow("FG Mask MOG 2", fgMaskMOG2); //get the input from the keyboard keyboard = waitKey( 30 ); -- GitLab