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

changes on android app to print when hand is present or stable

parent 4888e575
No related branches found
No related tags found
No related merge requests found
package uy.edu.fing.chesstrack.modulovision.imgproc;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
import java.util.Vector;
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.core.MatOfPoint;
import org.opencv.core.Point;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.core.Size;
import org.opencv.video.BackgroundSubtractorMOG;
import org.opencv.video.BackgroundSubtractorMOG2;
import org.opencv.imgproc.*;
import android.graphics.SumPathEffect;
import android.media.AudioManager;
import android.media.ToneGenerator;
import android.util.Log;
public class BackgroundSupress implements ImgProcInterface {
private static final String TAG = "CHESSTRACK::BackgroundSupress";
private final Mat fgMaskMOG;
private final Mat fgMaskMOG2;
private final Mat morphKernel;
private final BackgroundSubtractorMOG pMOG;
private final BackgroundSubtractorMOG2 pMOG2;
private final List<MatOfPoint> contours;
public BackgroundSupress() {
super();
morphKernel = Imgproc.getStructuringElement(Imgproc.MORPH_RECT, new Size(3,3));
fgMaskMOG = new Mat(4,1,CvType.CV_8UC1);
fgMaskMOG2 = new Mat(4,1,CvType.CV_8UC1);
pMOG = new BackgroundSubtractorMOG(); //MOG approach
pMOG2 = new BackgroundSubtractorMOG2(); //MOG approach
Log.i(TAG, "at background supress constructor");
contours = new ArrayList<MatOfPoint>();
}
@Override
public Mat procesarImagen(Mat inputFrame) {
Log.i(TAG, "BackgroundS ");
Mat copy = new Mat(inputFrame.size(),CvType.CV_8UC3);
inputFrame.convertTo(copy, CvType.CV_8UC3);
Imgproc.cvtColor(inputFrame, copy, Imgproc.COLOR_BGRA2BGR);
pMOG.apply(copy, fgMaskMOG);
pMOG2.apply(copy, fgMaskMOG2,0);
Log.i(TAG, "Apply pMOG");
Imgproc.erode(fgMaskMOG2, fgMaskMOG2, morphKernel);
Log.i(TAG, "Apply erode");
Imgproc.threshold(fgMaskMOG2, fgMaskMOG2, 200, 255, Imgproc.THRESH_BINARY);
Log.i(TAG, "Apply threshold");
Imgproc.dilate(fgMaskMOG2, fgMaskMOG2, morphKernel);
Log.i(TAG, "Apply dilate");
Scalar suma = Core.sumElems(fgMaskMOG2);
Log.i(TAG, "SUMA = " + suma);
/*double maxArea = 0;
MatOfPoint largestContour = null;
Imgproc.findContours(fgMaskMOG2, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_TC89_L1);
for (MatOfPoint contour : contours) {
double area = Imgproc.contourArea(contour);
if (area > maxArea) {
maxArea = area;
largestContour = contour;
}
}
Log.i(TAG, "ESTABLE !!!" + maxArea);
if ((largestContour != null) && (maxArea > 10000)){
Log.i(TAG, "MANO !!!" + maxArea);
Rect boundingRect = Imgproc.boundingRect(largestContour);
ToneGenerator toneG = new ToneGenerator(AudioManager.STREAM_ALARM, 50);
toneG.startTone(ToneGenerator.TONE_CDMA_ALERT_CALL_GUARD, 200); // 200 is duration in ms
}*/
if (suma.val[0] > 100000){
Log.i(TAG, "MANO !!!");
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 {
Log.i(TAG, "ESTABLE !!!");
Core.putText(fgMaskMOG2, "ESTABLE !!!", new Point(50, 50),Core.FONT_HERSHEY_SIMPLEX, 0.5 , new Scalar(255,255,0));
}
/*Imgproc.findContours(fgMaskMOG2, contours, new Mat(), Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_NONE);
for(int idx = 0; idx < contours.size(); idx++)
{
double area = Imgproc.contourArea(contours.get(idx));
Log.i(TAG, "CONTOUR = AREA: " + area);
if ((area > 15000) && (area < 70000)){
Log.i(TAG, "DRAW !!! : " + area);
Scalar color = new Scalar(255,127,127);
Rect r = Imgproc.boundingRect(contours.get(idx));
Log.i(TAG, "3 at backgroundS "+(fgMaskMOG2.type() == CvType.CV_8UC1));
Core.rectangle(fgMaskMOG2, r.tl(), r.br(), color, 2, 8, 0);
//Imgproc.drawContours(fgMaskMOG2, contours, idx, color);
}
}
contours.clear();*/
Log.i(TAG, "END Background Sss");
return fgMaskMOG2;
}
}
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