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); }
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); } }
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(); } }
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); }
public OcvOp() { mog2 = BackgroundSubtractorMOG2.Create(); }