Search in sources :

Example 1 with Tex

use of spacegraph.video.Tex in project narchy by automenta.

the class ExampleBackgroundRemovalStationary method main.

public static void main(String[] args) {
    WebCam c = new WebCam();
    Tex output = new Tex();
    SpaceGraph.window(new Gridding(c.view(), output.view()), 800, 800);
    // String fileName = UtilIO.pathExample("background/horse_jitter.mp4"); // degraded performance because of jitter
    // String fileName = UtilIO.pathExample("tracking/chipmunk.mjpeg"); // Camera moves.  Stationary will fail here
    // Comment/Uncomment to switch input image type
    ImageType imageType = ImageType.single(GrayF32.class);
    // ImageType imageType = ImageType.il(3, InterleavedF32.class);
    // ImageType imageType = ImageType.il(3, InterleavedU8.class);
    // Configuration for Gaussian model.  Note that the threshold changes depending on the number of image bands
    // 12 = gray scale and 40 = color
    ConfigBackgroundGaussian configGaussian = new ConfigBackgroundGaussian(40, 0.0005f);
    configGaussian.initialVariance = 100;
    configGaussian.minimumDifference = 10f;
    // Comment/Uncomment to switch algorithms
    BackgroundModelStationary background = // FactoryBackgroundModel.stationaryBasic(new ConfigBackgroundBasic(35, 0.005f), imageType);
    FactoryBackgroundModel.stationaryGaussian(configGaussian, imageType);
    // Declare storage for segmented image.  1 = moving foreground and 0 = background
    GrayU8 segmented = new GrayU8(c.width, c.height);
    GrayF32 input = new GrayF32(c.width, c.height);
    BufferedImage segmentedVis = new BufferedImage(c.width, c.height, BufferedImage.TYPE_INT_RGB);
    new Loop(10f) {

        @Override
        public boolean next() {
            BufferedImage img = c.image;
            if (img != null) {
                ConvertBufferedImage.convertFrom(img, input, true);
                // long before = System.nanoTime();
                background.segment(input, segmented);
                background.updateBackground(input);
                byte[] b = segmented.data;
                for (int i = 0; i < b.length; i++) {
                    if (b[i] != 0)
                        b[i] = 127;
                }
                output.update(// segmented
                ConvertBufferedImage.convertTo(segmented, segmentedVis));
            }
            // }
            return true;
        }
    };
}
Also used : Loop(jcog.exe.Loop) Gridding(spacegraph.space2d.container.Gridding) BackgroundModelStationary(boofcv.alg.background.BackgroundModelStationary) GrayF32(boofcv.struct.image.GrayF32) Tex(spacegraph.video.Tex) WebCam(spacegraph.video.WebCam) GrayU8(boofcv.struct.image.GrayU8) BufferedImage(java.awt.image.BufferedImage) ConvertBufferedImage(boofcv.io.image.ConvertBufferedImage) ImageType(boofcv.struct.image.ImageType) ConfigBackgroundGaussian(boofcv.factory.background.ConfigBackgroundGaussian)

Aggregations

BackgroundModelStationary (boofcv.alg.background.BackgroundModelStationary)1 ConfigBackgroundGaussian (boofcv.factory.background.ConfigBackgroundGaussian)1 ConvertBufferedImage (boofcv.io.image.ConvertBufferedImage)1 GrayF32 (boofcv.struct.image.GrayF32)1 GrayU8 (boofcv.struct.image.GrayU8)1 ImageType (boofcv.struct.image.ImageType)1 BufferedImage (java.awt.image.BufferedImage)1 Loop (jcog.exe.Loop)1 Gridding (spacegraph.space2d.container.Gridding)1 Tex (spacegraph.video.Tex)1 WebCam (spacegraph.video.WebCam)1