public static void Blob_CvConnectedComponent() { Glb.DrawMatAndHist0(Glb.matSrc); var matThr = Glb.matSrc.CvtColor(ColorConversionCodes.BGR2GRAY).Threshold(128, 255, ThresholdTypes.Otsu); var matLabels = new Mat(); var matStats = new Mat(); var matCentroids = new Mat(); Glb.TimerStart(); int num = matThr.ConnectedComponentsWithStats(matLabels, matStats, matCentroids) - 1; // 배경까지 블럽으로 계산된다. Console.WriteLine("=> Label Time: {0}ms", Glb.TimerStop()); var matDsp = new Mat(Glb.matSrc.Rows, Glb.matSrc.Cols, MatType.CV_8UC3); matDsp.SetTo(Scalar.Black); Glb.TimerStart(); MyBlobRenderer.RenderBlobs(matLabels, matStats, matCentroids, matDsp); Console.WriteLine("=> Render Time: {0}ms", Glb.TimerStop()); Console.WriteLine("=> Blob Count: {0}", num); Glb.DrawMatAndHist1(matThr); Glb.DrawMatAndHist2(matDsp); matThr.Dispose(); matLabels.Dispose(); matStats.Dispose(); matCentroids.Dispose(); matDsp.Dispose(); }
public static void Blob_Ipp() { Glb.DrawMatAndHist0(Glb.matSrc); var matThr = Glb.matSrc.CvtColor(ColorConversionCodes.BGR2GRAY).Threshold(128, 255, ThresholdTypes.Otsu); MyBlobs blobs = new MyBlobs(); Stopwatch sw = Stopwatch.StartNew(); blobs.LabelIpp(matThr.Data, matThr.Width, matThr.Height, (int)matThr.Step()); sw.Stop(); Console.WriteLine("=> Label Time: {0}ms", sw.ElapsedMilliseconds); var matDst = new Mat(Glb.matSrc.Rows, Glb.matSrc.Cols, MatType.CV_8UC3); matDst.SetTo(Scalar.Black); Glb.TimerStart(); MyBlobRenderer.RenderBlobs(blobs, matDst); Console.WriteLine("=> Render Time: {0}ms", Glb.TimerStop()); Console.WriteLine("=> Blob Count: {0}", blobs.Blobs.Count); Glb.DrawMatAndHist1(matThr); Glb.DrawMatAndHist2(matDst); matThr.Dispose(); matDst.Dispose(); }
public static void Blob_CvBlobs(int filterArea = 0) { Glb.DrawMatAndHist0(Glb.matSrc); var matThr = Glb.matSrc.CvtColor(ColorConversionCodes.BGR2GRAY).Threshold(128, 255, ThresholdTypes.Otsu); var blobs = new CvBlobs(); Glb.TimerStart(); int cnt = blobs.Label(matThr); Console.WriteLine("=> Label Time: {0}ms", Glb.TimerStop()); blobs.FilterByArea(filterArea, int.MaxValue); var matDsp = new Mat(Glb.matSrc.Rows, Glb.matSrc.Cols, MatType.CV_8UC3); matDsp.SetTo(Scalar.Black); Glb.TimerStart(); MyBlobRenderer.RenderBlobs(blobs, matDsp); Console.WriteLine("=> Render Time: {0}ms", Glb.TimerStop()); Console.WriteLine("=> Blob Count: {0}", blobs.Count); Glb.DrawMatAndHist1(matThr); Glb.DrawMatAndHist2(matDsp); matThr.Dispose(); matDsp.Dispose(); }