예제 #1
0
        protected override Image AlgorithmImplementation(Image sourceImage, Dictionary <String, String> parameters)
        {
            var resultImage = new Image(sourceImage.Height, sourceImage.Width);

            for (var iterator = new PixelIterator(sourceImage); iterator != null; iterator = iterator + 1)
            {
                Pixel inversePix = new Pixel((byte)255, (byte)255, (byte)255);
                resultImage[iterator.CurrentPixel.Y, iterator.CurrentPixel.X]   = new Pixel();
                resultImage[iterator.CurrentPixel.Y, iterator.CurrentPixel.X].R = (byte)(inversePix.R - sourceImage[iterator.CurrentPixel.Y, iterator.CurrentPixel.X].R);
                resultImage[iterator.CurrentPixel.Y, iterator.CurrentPixel.X].G = (byte)(inversePix.G - sourceImage[iterator.CurrentPixel.Y, iterator.CurrentPixel.X].G);
                resultImage[iterator.CurrentPixel.Y, iterator.CurrentPixel.X].B = (byte)(inversePix.B - sourceImage[iterator.CurrentPixel.Y, iterator.CurrentPixel.X].B);
            }

            return(resultImage);
        }
예제 #2
0
            public static void WriteImage(Image image, String filename)
            {
                var mat = new Mat(image.Height, image.Width, Emgu.CV.CvEnum.DepthType.Cv8U, 3);
                var img = mat.ToImage <Bgr, Byte>();

                for (var iterator = new PixelIterator(image); iterator != null; iterator = iterator + 1)
                {
                    img.Data[iterator.CurrentPixel.Y, iterator.CurrentPixel.X, 0] = iterator.CurrentPixel.DecoratedPixel.B;
                    img.Data[iterator.CurrentPixel.Y, iterator.CurrentPixel.X, 1] = iterator.CurrentPixel.DecoratedPixel.G;
                    img.Data[iterator.CurrentPixel.Y, iterator.CurrentPixel.X, 2] = iterator.CurrentPixel.DecoratedPixel.R;
                }
                img.Save(filename);

                mat.Dispose();
            }