Skip to content
Snippets Groups Projects
Commit d1f1fd11 authored by Aylen Ricca's avatar Aylen Ricca
Browse files

on sample add to write img-clear board- & on android added debug to client from supressBackground

parent e7898c04
No related branches found
No related tags found
No related merge requests found
...@@ -17,6 +17,7 @@ import org.opencv.video.BackgroundSubtractorMOG; ...@@ -17,6 +17,7 @@ import org.opencv.video.BackgroundSubtractorMOG;
import org.opencv.video.BackgroundSubtractorMOG2; import org.opencv.video.BackgroundSubtractorMOG2;
import org.opencv.imgproc.*; import org.opencv.imgproc.*;
import uy.edu.chesstrack.communication.Client;
import android.graphics.SumPathEffect; import android.graphics.SumPathEffect;
import android.media.AudioManager; import android.media.AudioManager;
import android.media.ToneGenerator; import android.media.ToneGenerator;
...@@ -26,12 +27,16 @@ import android.util.Log; ...@@ -26,12 +27,16 @@ import android.util.Log;
public class BackgroundSupress implements ImgProcInterface { public class BackgroundSupress implements ImgProcInterface {
private static final String TAG = "CHESSTRACK::BackgroundSupress"; private static final String TAG = "CHESSTRACK::BackgroundSupress";
private static int e = 0;
private final Mat fgMaskMOG; private final Mat fgMaskMOG;
private final Mat fgMaskMOG2; private Mat fgMaskMOG2;
private final Mat morphKernel; private final Mat morphKernel;
private final BackgroundSubtractorMOG pMOG; private final BackgroundSubtractorMOG pMOG;
private final BackgroundSubtractorMOG2 pMOG2; private BackgroundSubtractorMOG2 pMOG2;
private final List<MatOfPoint> contours; //private final List<MatOfPoint> contours;
private Client communicator;
private int estadoANTERIOR = 0;
private int estadoACTUAL = 0;
public BackgroundSupress() { public BackgroundSupress() {
super(); super();
...@@ -41,7 +46,9 @@ public class BackgroundSupress implements ImgProcInterface { ...@@ -41,7 +46,9 @@ public class BackgroundSupress implements ImgProcInterface {
pMOG = new BackgroundSubtractorMOG(); //MOG approach pMOG = new BackgroundSubtractorMOG(); //MOG approach
pMOG2 = new BackgroundSubtractorMOG2(); //MOG approach pMOG2 = new BackgroundSubtractorMOG2(); //MOG approach
Log.i(TAG, "at background supress constructor"); Log.i(TAG, "at background supress constructor");
contours = new ArrayList<MatOfPoint>(); //contours = new ArrayList<MatOfPoint>();
communicator = Client.getInstance();
} }
@Override @Override
...@@ -62,8 +69,8 @@ public class BackgroundSupress implements ImgProcInterface { ...@@ -62,8 +69,8 @@ public class BackgroundSupress implements ImgProcInterface {
Imgproc.threshold(fgMaskMOG2, fgMaskMOG2, 200, 255, Imgproc.THRESH_BINARY); Imgproc.threshold(fgMaskMOG2, fgMaskMOG2, 200, 255, Imgproc.THRESH_BINARY);
Log.i(TAG, "Apply threshold"); Log.i(TAG, "Apply threshold");
Imgproc.dilate(fgMaskMOG2, fgMaskMOG2, morphKernel); //Imgproc.dilate(fgMaskMOG2, fgMaskMOG2, morphKernel);
Log.i(TAG, "Apply dilate"); //Log.i(TAG, "Apply dilate");
Scalar suma = Core.sumElems(fgMaskMOG2); Scalar suma = Core.sumElems(fgMaskMOG2);
Log.i(TAG, "SUMA = " + suma); Log.i(TAG, "SUMA = " + suma);
...@@ -87,12 +94,28 @@ public class BackgroundSupress implements ImgProcInterface { ...@@ -87,12 +94,28 @@ public class BackgroundSupress implements ImgProcInterface {
}*/ }*/
if (suma.val[0] > 100000){ if (suma.val[0] > 100000){
estadoANTERIOR = estadoACTUAL;
estadoACTUAL = 1;
Log.i(TAG, "MANO !!!"); 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)); 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); // ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50);
// toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms // toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms
} else { } 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 !!!"); 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)); Core.putText(fgMaskMOG2, "ESTABLE !!!", new Point(50, 50),Core.FONT_HERSHEY_SIMPLEX, 0.5 , new Scalar(255,255,0));
} }
......
...@@ -66,7 +66,7 @@ int main(int argc, char* argv[]) ...@@ -66,7 +66,7 @@ int main(int argc, char* argv[])
//create GUI windows //create GUI windows
namedWindow("Frame"); namedWindow("Frame");
namedWindow("FG Mask MOG"); //namedWindow("FG Mask MOG");
namedWindow("FG Mask MOG 2"); namedWindow("FG Mask MOG 2");
//create Background Subtractor objects //create Background Subtractor objects
...@@ -99,6 +99,10 @@ int main(int argc, char* argv[]) ...@@ -99,6 +99,10 @@ int main(int argc, char* argv[])
void processVideo(char* videoFilename) { void processVideo(char* videoFilename) {
int estadoANTERIOR = 0; int estadoANTERIOR = 0;
int estadoACTUAL = 0; int estadoACTUAL = 0;
int c = 0;
char buffer [15];
//create the capture object //create the capture object
VideoCapture capture(videoFilename); VideoCapture capture(videoFilename);
if(!capture.isOpened()){ if(!capture.isOpened()){
...@@ -142,7 +146,7 @@ void processVideo(char* videoFilename) { ...@@ -142,7 +146,7 @@ void processVideo(char* videoFilename) {
// cerr << suma.val[0] << endl; // cerr << suma.val[0] << endl;
if (suma.val[0] > 1000000){ if (suma.val[0] > 1250000){
// estado oclusion // estado oclusion
estadoANTERIOR = estadoACTUAL; estadoANTERIOR = estadoACTUAL;
estadoACTUAL = 1; estadoACTUAL = 1;
...@@ -158,6 +162,12 @@ void processVideo(char* videoFilename) { ...@@ -158,6 +162,12 @@ void processVideo(char* videoFilename) {
if (estadoANTERIOR == 3){ if (estadoANTERIOR == 3){
// estado estable // estado estable
estadoACTUAL = 2; estadoACTUAL = 2;
imshow("ESTABLE", frame);
int b = sprintf (buffer, "tablero%d.png", c);
imwrite(buffer, frame);
c++;
pMOG= new BackgroundSubtractorMOG(); //MOG approach pMOG= new BackgroundSubtractorMOG(); //MOG approach
pMOG2 = new BackgroundSubtractorMOG2(); //MOG2 approach pMOG2 = new BackgroundSubtractorMOG2(); //MOG2 approach
} }
...@@ -184,7 +194,7 @@ void processVideo(char* videoFilename) { ...@@ -184,7 +194,7 @@ void processVideo(char* videoFilename) {
//show the current frame and the fg masks //show the current frame and the fg masks
imshow("Frame", frame); imshow("Frame", frame);
imshow("FG Mask MOG", fgMaskMOG); // imshow("FG Mask MOG", fgMaskMOG);
imshow("FG Mask MOG 2", fgMaskMOG2); imshow("FG Mask MOG 2", fgMaskMOG2);
//get the input from the keyboard //get the input from the keyboard
keyboard = waitKey( 30 ); keyboard = waitKey( 30 );
......
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