public static void ErodeIpp(int iteration) { Glb.DrawMatAndHist0(Glb.matSrc); var matGray = Glb.matSrc.CvtColor(ColorConversionCodes.BGR2GRAY); Glb.DrawMatAndHist1(matGray); Glb.TimerStart(); var matDst = new Mat(matGray.Size(), matGray.Type()); for (int i = 0; i < iteration; i++) { if (i % 2 == 0) { IpDll.ErodeIpp(matGray.Data, matDst.Data, matGray.Width, matGray.Height, (int)matGray.Step()); } else { IpDll.ErodeIpp(matDst.Data, matGray.Data, matGray.Width, matGray.Height, (int)matGray.Step()); } } if (iteration != 0 && iteration % 2 == 0) { matGray.CopyTo(matDst); } Console.WriteLine("=> Method Time: {0}ms", Glb.TimerStop()); Glb.DrawMatAndHist2(matDst); matGray.Dispose(); matDst.Dispose(); }
public static Mat ErodeIpp(Mat matGray, int iteration) { var mat0 = matGray.Clone(); var mat1 = new Mat(mat0.Size(), mat0.Type()); for (int i = 0; i < iteration; i++) { var matSrc = (i % 2 == 0) ? mat0 : mat1; var matDst = (i % 2 == 0) ? mat1 : mat0; IpDll.ErodeIpp(matSrc.Data, matDst.Data, matGray.Width, matGray.Height, (int)matGray.Step()); } return((iteration % 2 == 0) ? mat0 : mat1); }