public void BackgroundSubtractor_Example()
        {
            VideoCapture capture = new VideoCapture(0);

            using var MOG2 = BackgroundSubtractorMOG2.Create();
            using var MOG  = BackgroundSubtractorMOG.Create();
            using var GMG  = BackgroundSubtractorGMG.Create();
            using var KNN  = BackgroundSubtractorKNN.Create();

            using Mat frame      = new Mat();
            using Mat MOG2remove = new Mat();
            using Mat MOGremove  = new Mat();
            using Mat GMG2remove = new Mat();
            using Mat KNNremove  = new Mat();
            Window win_MOG2 = new Window("MOG2");
            Window win_GMG  = new Window("GMG");
            Window win_MOG  = new Window("MOG");
            Window win_KNN  = new Window("KNN");

            while (Cv2.WaitKey(1) < 0)
            {
                capture.Read(frame);
                MOG2.Apply(frame, MOG2remove);
                MOG.Apply(frame, MOGremove);
                GMG.Apply(frame, GMG2remove);
                KNN.Apply(frame, KNNremove);

                win_MOG2.ShowImage(MOG2remove);
                win_GMG.ShowImage(MOGremove);
                win_MOG.ShowImage(GMG2remove);
                win_KNN.ShowImage(KNNremove);
            }
        }
 public Filter(DeviceModel device, InferenceServer inferenceServer)
 {
     _device           = device;
     _inferenceServer  = inferenceServer;
     _inferenceChannel = inferenceServer.CreateChannel();
     _segmentor        = BackgroundSubtractorMOG2.Create(500, 16, true);
 }
Beispiel #3
0
        private static void BackgroundSubtractorSample()
        {
            var mog        = BackgroundSubtractorMOG2.Create();
            var mask       = new Mat();
            var colorImage = Cv2.ImRead(@"data\shapes.png");

            mog.Apply(colorImage, mask, 0.01);
            Window.ShowImages(colorImage, mask);
        }
 public void Apply()
 {
     using (var mog = BackgroundSubtractorMOG2.Create())
         using (var src = Image("Data/Image/lenna.png"))
             using (var dst = new Mat())
             {
                 mog.Apply(src, dst);
             }
 }
Beispiel #5
0
    void Start()
    {
        webCamTexture = new WebCamTexture(WebCamTexture.devices[0].name);
        webCamTexture.Play();

        // Avoid using new keyword in Update(), esp. with Mat and Texture2D
        tex  = new Texture2D(webCamTexture.width, webCamTexture.height, TextureFormat.RGBA32, false);
        mat  = fg = new Mat(webCamTexture.height, webCamTexture.width, MatType.CV_8UC4);
        nm   = new Mat();
        mog2 = BackgroundSubtractorMOG2.Create(200, 16, true);
    }
 public void CheckProperties()
 {
     using (var mog = BackgroundSubtractorMOG2.Create())
     {
         mog.BackgroundRatio = mog.BackgroundRatio;
         mog.ComplexityReductionThreshold = mog.ComplexityReductionThreshold;
         mog.DetectShadows   = mog.DetectShadows;
         mog.History         = mog.History;
         mog.NMixtures       = mog.NMixtures;
         mog.ShadowThreshold = mog.ShadowThreshold;
         mog.ShadowValue     = mog.ShadowValue;
         mog.VarInit         = mog.VarInit;
         mog.VarMax          = mog.VarMax;
         mog.VarMin          = mog.VarMin;
         mog.VarThreshold    = mog.VarThreshold;
         mog.VarThresholdGen = mog.BackgroundRatio;
     }
 }
        //test image from https://play.google.com/store/apps/details?id=com.vizalevgames.finddifferences200levels
        //thank for that
        static void Main()
        {
            var org1 = new Mat("1.jpg");
            var org2 = new Mat("2.jpg");

            //create background subtraction method
            var mog  = BackgroundSubtractorMOG2.Create();
            var mask = new Mat();

            mog.Apply(org1, mask);
            mog.Apply(org2, mask);

            //reduce noise
            Cv2.MorphologyEx(mask, mask, MorphTypes.Open, null, null, 2);

            //convert mask from gray to BGR for AddWeighted function
            var maskBgr = new Mat();

            Cv2.CvtColor(mask, maskBgr, ColorConversionCodes.GRAY2BGR);

            //apply two image as one
            Cv2.AddWeighted(org1, 1.0, maskBgr, 0.5, 2.2, org1);
            Cv2.AddWeighted(org2, 1.0, maskBgr, 0.5, 2.2, org2);

            #region draw contours
            var canny = new Mat();
            Cv2.Canny(mask, canny, 15, 120);
            Cv2.FindContours(canny, out var contours, out var _, RetrievalModes.External, ContourApproximationModes.ApproxSimple);

            Cv2.DrawContours(org1, contours, -1, Scalar.Red, 2);
            Cv2.DrawContours(org2, contours, -1, Scalar.Red, 2);
            #endregion

            using (new Window("org1", org1))
                using (new Window("org2", org2))
                    using (new Window("mask", mask))
                    {
                        Cv2.WaitKey();
                    }
        }
Beispiel #8
0
        private void ProcImage3(ref System.Drawing.Bitmap src, ref System.Drawing.Bitmap srcB, out System.Drawing.Bitmap dst)
        {
            dst = null;
            Mat srcImg = BitmapConverter.ToMat(src);

            Cv2.CvtColor(srcImg, srcImg, ColorConversionCodes.BGRA2BGR);

            Mat srcImgB = BitmapConverter.ToMat(srcB);

            Cv2.CvtColor(srcImgB, srcImgB, ColorConversionCodes.BGRA2BGR);

            Mat    mask                  = new Mat();
            double threshold             = App.appSettings.DarkAreaThreshold;
            BackgroundSubtractor backSub = BackgroundSubtractorMOG2.Create(1, threshold, true);

            //BackgroundSubtractor backSub = BackgroundSubtractorMOG.Create(1, 5, 0.7, 0);
            //BackgroundSubtractor backSub = BackgroundSubtractorGMG.Create(1, 0.5);
            backSub.Apply(srcImgB, mask, 1);
            backSub.Apply(srcImg, mask, 0);

            Cv2.Threshold(mask, mask, 180, 255, ThresholdTypes.Binary);

            var element = Cv2.GetStructuringElement(
                MorphShapes.Rect,
                new OpenCvSharp.Size(2 * 2 + 1, 2 * 2 + 1),
                new OpenCvSharp.Point(2, 2));

            Mat tmp = new Mat();

            Cv2.MorphologyEx(mask, tmp, MorphTypes.Close, element, null, App.appSettings.Iterations);

            Cv2.MorphologyEx(tmp, mask, MorphTypes.Open, element, null, App.appSettings.Iterations2);
            Cv2.Erode(mask, tmp, element);

            dst = BitmapConverter.ToBitmap(tmp);
        }
Beispiel #9
0
 public OcvOp()
 {
     mog2 = BackgroundSubtractorMOG2.Create();
 }