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); }
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(); }