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;
            }
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
 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);
         }
     }
 }
Beispiel #5
0
        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);
                }
            }
        }