Example usage for org.opencv.video BackgroundSubtractorMOG2 setDetectShadows

List of usage examples for org.opencv.video BackgroundSubtractorMOG2 setDetectShadows

Introduction

In this page you can find the example usage for org.opencv.video BackgroundSubtractorMOG2 setDetectShadows.

Prototype

public void setDetectShadows(boolean detectShadows) 

Source Link

Usage

From source file:edu.fiu.cate.breader.BaseSegmentation.java

public BaseSegmentation() {

    abbyy = ABBYY.getABBYY();//  ww w  .  j  a va2 s. c  o  m

    String imgType = "test"; //ampdata
    String pathToImg = "/mnt/Research/Harold/BookReader/Images/J2 test images/SHM/";
    pathToImg = "/media/harold/DataLPC/BReader/Background Removal Test/cardboardNN/";
    pathToImg = "/media/harold/DataLPC/BReader/7-16-17/";
    String extension = "tiff"; //tiff

    Mat image = null, fgMask = null, output = null;
    BackgroundSubtractorMOG2 backgroundSubtractorMOG = Video.createBackgroundSubtractorMOG2();
    backgroundSubtractorMOG.setDetectShadows(false);

    Argos3D argos = new Argos3D();
    argos.update();
    disp = new CaptureSettings();
    disp.addWindowListener(new java.awt.event.WindowAdapter() {
        @Override
        public void windowClosing(java.awt.event.WindowEvent e) {
            argos.close();
            e.getWindow().dispose();
        }
    });

    int w = argos.getImageData().numColumns;
    int h = argos.getImageData().numRows;
    float[] amp = argos.getAmplitudes();
    float[] dist = argos.getAmplitudes();
    byte[] img = new byte[dist.length];

    //Saving images
    argos.setBilateralFilter(true);
    RollingImageFilter filter = new RollingImageFilter(60, 120 * 160);
    for (int i = 0; i < 60; i++) {
        dist = argos.getDistances();
        filter.filter(dist);
    }
    // capture a base image
    float[] base = readBase(saveDir + "/lastBase.bin");
    if (base == null) {
        base = new float[(120 * 160)];
        for (int i = 0; i < 120; i++) {
            dist = filter.filter(argos.getDistances());
            base = Vector.add(base, dist);
        }
        base = Vector.scalarMult(base, 1.0f / 120.0f);
        saveBase(saveDir + "/lastBase.bin", base);
    } else {
        System.out.println("Base loaded from file at: ");
        System.out.println("\t" + saveDir + "/lastBase.bin");
    }

    BufferedImage finalDisplay = null;

    disp.enableCapture(true);
    disp.addCaptureActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            captureEvent();
        }
    });

    float[] filtDist, averageRes;
    while ((dist = argos.getDistances()) != null) {

        filtDist = filter.filter(dist);
        averageRes = Vector.substract(filtDist, base);
        // 2D Raw distance as received from Argos
        rawrawDist = BReaderTools.getHorizontalFlip(BReaderTools.getImageFromArray(dist, w, h));
        // 2D Filtered Distances
        rawDist = BReaderTools.getHorizontalFlip(BReaderTools.getImageFromArray(filtDist, w, h));
        // 2D Difference between the base readings and the filtered readings
        normImg = BReaderTools.getHorizontalFlip(BReaderTools.getImageFromArray(averageRes, w, h));
        // 2D IR Amplitude (grayscale) image from Argos
        amplitudes = BReaderTools
                .getHorizontalFlip(BReaderTools.getImageFromArray(argos.getAmplitudes(), w, h));
        // Cropped book surface
        normImgCropped = ITools.crop(160 - 120, 25, 160 - 30, 85, normImg);

        image = BReaderTools.byteArrayToMat(ITools.normalize(normImgCropped));
        finalDisplay = BReaderTools.bufferedImageFromGrayMat(image);

        //         disp.setImage(ImageManipulation.getGrayBufferedImage(img));
        disp.setImage(ImageManipulation.getGrayBufferedImage(ITools.normalize(normImgCropped)));

        //           ImageManipulation.writeImage(ITools.normalize(normImg), pathToImg+"dist"+(i++)+".tiff"); 
        //           ImageManipulation.writeImage(ITools.normalize(normImgCropped), pathToImg+"distC"+(i++)+".tiff"); 
        //           ImageManipulation.writeImage(ITools.normalize(amplitudes), pathToImg+"amp"+(i++)+".tiff"); 
        //           BReaderTools.saveFloatArrayToFile(pathToImg+"raw"+(i++)+".bin", rawDist);

        if (finalDisplay != null) {
            disp.setImage(finalDisplay);
        }
    }
    argos.close();
    //Saving images end

}