예제 #1
0
        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();
        }
예제 #2
0
        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);
        }