List of usage examples for org.opencv.video BackgroundSubtractorMOG2 setDetectShadows
public void setDetectShadows(boolean detectShadows)
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 }