public override void Show(object value) { var inputImage = (IplImage)value; visualizerImage = IplImageHelper.EnsureImageFormat(visualizerImage, inputImage.Size, inputImage.Depth, inputImage.Channels); CV.Copy(inputImage, visualizerImage); UpdateStatus(); }
public override void Show(object value) { var inputImage = (IplImage)value; if (Mashups.Count > 0) { VisualizerImage = IplImageHelper.EnsureImageFormat(VisualizerImage, inputImage.Size, inputImage.Depth, inputImage.Channels); CV.Copy(inputImage, VisualizerImage); } else { VisualizerImage = inputImage; } }
public void Update(IplImage image, double min, double max) { if (image == null) { throw new ArgumentNullException("image"); } if (image.Depth != IplDepth.U8) { //double min, max; //Point minLoc, maxLoc; normalizedImage = IplImageHelper.EnsureImageFormat(normalizedImage, image.Size, IplDepth.U8, image.Channels); //using (var buffer = image.Reshape(1, 0)) //{ // CV.MinMaxLoc(buffer, out min, out max, out minLoc, out maxLoc); //} var range = max - min; var scale = range > 0 ? 255.0 / range : 0; var shift = range > 0 ? -min : 0; CV.ConvertScale(image, normalizedImage, scale, shift * scale); image = normalizedImage; } if (!nonPowerOfTwo || image.Width > maxTextureSize || image.Height > maxTextureSize) { var textureWidth = Math.Min(maxTextureSize, NearestPowerOfTwo(image.Width)); var textureHeight = Math.Min(maxTextureSize, NearestPowerOfTwo(image.Height)); textureImage = IplImageHelper.EnsureImageFormat(textureImage, new Size(textureWidth, textureHeight), image.Depth, image.Channels); CV.Resize(image, textureImage, SubPixelInterpolation.Linear); image = textureImage; } OpenTK.Graphics.OpenGL.PixelFormat pixelFormat; switch (image.Channels) { case 1: pixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Luminance; break; case 2: pixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Rg; break; case 3: pixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Bgr; break; case 4: pixelFormat = OpenTK.Graphics.OpenGL.PixelFormat.Bgra; break; default: throw new ArgumentException("Image has an unsupported number of channels.", "image"); } GL.BindTexture(TextureTarget.Texture2D, texture); GL.PixelStore(PixelStoreParameter.UnpackRowLength, image.WidthStep / image.Channels); GL.TexImage2D(TextureTarget.Texture2D, 0, PixelInternalFormat.Rgba, image.Width, image.Height, 0, pixelFormat, PixelType.UnsignedByte, image.ImageData); }
public override void Show(object value) { if (textVisualizer != null) { textVisualizer.Show(value); } else { if (input != null) { canvas = IplImageHelper.EnsureColorCopy(canvas, input); Draw(canvas, value); base.Show(canvas); } } }
public override void Show(object value) { regions = (RegionActivityCollection)value; if (input != null) { canvas = IplImageHelper.EnsureColorCopy(canvas, input); for (int i = 0; i < regions.Count; i++) { var rectangle = regions[i].Rect; var color = regions[i].Activity.Val0 > 0 ? ActiveRoi : InactiveRoi; int baseline; Size labelSize; var label = i.ToString(); var activity = regions[i].Activity.Val0.ToString("0.##"); CV.GetTextSize(label, font, out labelSize, out baseline); CV.PutText(canvas, label, new Point(rectangle.X + RoiThickness, rectangle.Y + labelSize.Height + RoiThickness), font, color); CV.PutText(canvas, activity, new Point(rectangle.X + RoiThickness, rectangle.Y - labelSize.Height - RoiThickness), font, color); } base.Show(canvas); } }
public override void Show(object value) { var image = (IplImage)value; var visualizerImage = visualizer.VisualizerImage; if (visualizerImage != null && image != null) { // Treat image as mask and overlay it if (image.Channels == 1) { var overlay = image; // If target is a color image, convert before overlay if (visualizerImage.Channels == 3) { color = IplImageHelper.EnsureImageFormat(color, visualizerImage.Size, visualizerImage.Depth, visualizerImage.Channels); CV.CvtColor(image, color, ColorConversion.Gray2Bgr); overlay = color; } CV.Copy(overlay, visualizerImage, image); } } }