Beispiel #1
0
 static void editarImagen(string rutaImagen)
 {
     System.Drawing.Bitmap imagen;
     //cargar la imagen de la ruta de la imagen
     imagen = (Bitmap)Bitmap.FromFile(rutaImagen);
     //crear la secuencia de filtros
     AForge.Imaging.Filters.FiltersSequence filter = new AForge.Imaging.Filters.FiltersSequence();
     //agregar los filtros a la secuencia de filtros
     filter.Add(new AForge.Imaging.Filters.ContrastCorrection(5));
     filter.Add(new AForge.Imaging.Filters.BrightnessCorrection(5));
     //aplicar los filtros
     imagen = filter.Apply(imagen);
     imagen.Save(@AppDomain.CurrentDomain.BaseDirectory + @"\Machote\FotoFirma-Copia-Editada.png");
     imagen.Dispose();
 }
Beispiel #2
0
        public async Task RandomBlur()
        {
            await Context.Channel.SendMessageAsync("I will see whats on the MENU");

            // load an image
            Bitmap image = (Bitmap)Bitmap.FromFile(@"D:\Main Folder\Personal Projects\discord-blur-bot\discord-blur-bot\discord-blur-bot\Core\Data\Image bank\test.jpg");

            //setup filters
            AForge.Imaging.Filters.FiltersSequence filter = new AForge.Imaging.Filters.FiltersSequence();

            filter.Add(new AForge.Imaging.Filters.ResizeBilinear(1080, 720));

            listoffilters.Add(new AForge.Imaging.Filters.AdditiveNoise(new AForge.Math.Random.UniformGenerator(new AForge.Range(-50, 50))));
            //filter.Add(new AForge.Imaging.Filters.BayerDithering());
            listoffilters.Add(new AForge.Imaging.Filters.Blur());
            //filter.Add(new AForge.Imaging.Filters.CannyEdgeDetector());
            listoffilters.Add(new AForge.Imaging.Filters.GammaCorrection(0.5));
            listoffilters.Add(new AForge.Imaging.Filters.GaussianBlur(4, 11));
            listoffilters.Add(new AForge.Imaging.Filters.GaussianSharpen(4, 11));
            //filter.Add(new AForge.Imaging.Filters.Sepia());
            listoffilters.Add(new AForge.Imaging.Filters.Jitter(4));
            listoffilters.Add(new AForge.Imaging.Filters.OilPainting(10));
            listoffilters.Add(new AForge.Imaging.Filters.Pixellate());
            //filter.Add(new AForge.Imaging.Filters.RotateBilinear(45));
            //filter.Add(new AForge.Imaging.Filters.GaussianSharpen(4, 11));

            foreach (AForge.Imaging.Filters.IFilter currfilter in listoffilters)
            {
                Random randgen = new Random();
                if (randgen.Next(0, 2) == 1)
                {
                    filter.Add(currfilter);
                }
            }

            // create filter
            //AForge.Imaging.Filters.Median filter = new AForge.Imaging.Filters.Median();

            // apply filter
            System.Drawing.Bitmap newImage = filter.Apply(image); //applyinplace

            newImage.Save(@"D:\Main Folder\Personal Projects\discord-blur-bot\discord-blur-bot\discord-blur-bot\Core\Data\Image bank\test-formatted.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

            await Context.Channel.SendFileAsync(@"D:\Main Folder\Personal Projects\discord-blur-bot\discord-blur-bot\discord-blur-bot\Core\Data\Image bank\test-formatted.jpg", "here is your gift");
        }
Beispiel #3
0
        private void CameraZm_NewVideoSample(object sender, WPFMediaKit.DirectShow.MediaPlayers.VideoSampleArgs e)
        {
            Dispatcher.Invoke(new Action(delegate()
            {
                System.Drawing.Bitmap oNewFrame = e.VideoFrame;

                AForge.Imaging.Filters.FiltersSequence seq = new AForge.Imaging.Filters.FiltersSequence();
                seq.Add(new AForge.Imaging.Filters.Grayscale(0.2125, 0.7154, 0.0721));
                seq.Add(new AForge.Imaging.Filters.Threshold(Threshold));
                seq.Add(new AForge.Imaging.Filters.GrayscaleToRGB());
                System.Drawing.Bitmap oFilterBitmap = seq.Apply(oNewFrame);

                var bitmapData = oFilterBitmap.LockBits(
                    new System.Drawing.Rectangle(0, 0, oFilterBitmap.Width, oFilterBitmap.Height),
                    System.Drawing.Imaging.ImageLockMode.ReadOnly, oFilterBitmap.PixelFormat);
                byte[] destArr = new byte[bitmapData.Stride * bitmapData.Height];
                System.Runtime.InteropServices.Marshal.Copy(bitmapData.Scan0, destArr, 0,
                                                            bitmapData.Stride * bitmapData.Height);
                oFilterBitmap.UnlockBits(bitmapData);


                var bitmapSource = BitmapSource.Create(
                    bitmapData.Width, bitmapData.Height, 96, 96, PixelFormats.Bgr24, null,
                    bitmapData.Scan0, bitmapData.Stride * bitmapData.Height, bitmapData.Stride);
                this.ImgMainZm.Source = bitmapSource;

                try
                {
                    this.ARRgbRaster.wrapBuffer(destArr);
                    int detectedMkrs = this.ARDetectMarker.detectMarkerLite(this.ARRgbRaster, Threshold);
                    this.CvMainZm.Children.Clear();
                    if (detectedMkrs > 0)
                    {
                        for (int i = 0; i < detectedMkrs; i++)
                        {
                            this.ShowMarkerRect(ARDetectMarker.getCorners(i));
                        }
                    }
                }
                catch
                {
                }
            }));
        }
        private void CameraZm_NewVideoSample(object sender, WPFMediaKit.DirectShow.MediaPlayers.VideoSampleArgs e)
        {
            Dispatcher.Invoke(new Action(delegate()
            {
                System.Drawing.Bitmap oNewFrame = e.VideoFrame;

                AForge.Imaging.Filters.FiltersSequence seq = new AForge.Imaging.Filters.FiltersSequence();
                seq.Add(new AForge.Imaging.Filters.Grayscale(0.2125, 0.7154, 0.0721));
                seq.Add(new AForge.Imaging.Filters.Threshold(127));
                seq.Add(new AForge.Imaging.Filters.GrayscaleToRGB());
                System.Drawing.Bitmap oFilterBitmap = seq.Apply(oNewFrame);

                var bitmapData = oFilterBitmap.LockBits(
                    new System.Drawing.Rectangle(0, 0, oFilterBitmap.Width, oFilterBitmap.Height),
                    System.Drawing.Imaging.ImageLockMode.ReadOnly, oFilterBitmap.PixelFormat);

                byte[] destArr = new byte[bitmapData.Stride * bitmapData.Height];

                System.Runtime.InteropServices.Marshal.Copy(bitmapData.Scan0, destArr, 0,
                                                            bitmapData.Stride * bitmapData.Height);

                var bitmapSource = BitmapSource.Create(
                    bitmapData.Width, bitmapData.Height, 96, 96, PixelFormats.Bgr24, null,
                    bitmapData.Scan0, bitmapData.Stride * bitmapData.Height, bitmapData.Stride);

                oFilterBitmap.UnlockBits(bitmapData);

                this.m_raster.wrapBuffer(destArr);

                try
                {
                    int detectedMkrs                    = this.m_ar.detectMarkerLite(this.m_raster, m_threshold);
                    NyARDoublePoint2d[] points          = null;
                    List <NyARDoublePoint2d[]> ltPoints = new List <NyARDoublePoint2d[]>();
                    if (detectedMkrs > 0)
                    {
                        points = m_ar.getCorners(0);

                        ltPoints.Add(points);
                        for (int i = 0; i < detectedMkrs; i++)
                        {
                            NyARDoublePoint2d[] oMarkerPoints = m_ar.getCorners(i);
                            ltPoints.Add(oMarkerPoints);
                        }
                    }
                    Dispatcher.BeginInvoke(new Action(delegate()
                    {
                        try
                        {
                            this.ImgMainZm.Source = bitmapSource;

                            this.CvMainZm.Children.Clear();
                            for (int i = 0; i < ltPoints.Count; i++)
                            {
                                NyARDoublePoint2d[] oMarkerPoints = ltPoints[i];
                                Polygon oPolygon = new Polygon()
                                {
                                    SnapsToDevicePixels = true,
                                    Fill    = new SolidColorBrush(Colors.Violet),
                                    Opacity = 0.8,
                                    Stroke  = new SolidColorBrush(Colors.Red)
                                };

                                oPolygon.Points = new PointCollection(new Point[]
                                {
                                    new Point(oMarkerPoints[0].x, cameraResY - oMarkerPoints[0].y),
                                    new Point(oMarkerPoints[1].x, cameraResY - oMarkerPoints[1].y),
                                    new Point(oMarkerPoints[2].x, cameraResY - oMarkerPoints[2].y),
                                    new Point(oMarkerPoints[3].x, cameraResY - oMarkerPoints[3].y)
                                });
                                this.CvMainZm.Children.Add(oPolygon);
                            }
                        }
                        catch
                        { }
                    }), null);
                }
                catch
                { }
            }));
        }
Beispiel #5
0
        void CaptureListener.OnBuffer(CaptureDevice i_sender, double i_sample_time, IntPtr i_buffer, int i_buffer_len)
        {
            int w = i_sender.video_width;
            int h = i_sender.video_height;
            int s = w * (i_sender.video_bit_count / 8);

            AForge.Imaging.Filters.FiltersSequence seq = new AForge.Imaging.Filters.FiltersSequence();
            seq.Add(new AForge.Imaging.Filters.Grayscale(0.2125, 0.7154, 0.0721));
            seq.Add(new AForge.Imaging.Filters.Threshold(127));
            seq.Add(new AForge.Imaging.Filters.GrayscaleToRGB());

            AForge.Imaging.UnmanagedImage srcImg = new AForge.Imaging.UnmanagedImage(i_buffer, w, h, s,
                                                                                     System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            AForge.Imaging.UnmanagedImage outputImg = seq.Apply(srcImg);

            byte[] destArr = new byte[outputImg.Stride * outputImg.Height];
            System.Runtime.InteropServices.Marshal.Copy(outputImg.ImageData, destArr, 0,
                                                        outputImg.Stride * outputImg.Height);
            this.m_raster.wrapBuffer(destArr);

            try
            {
                //this.m_ar.

                int detectedMkrs = this.m_ar.detectMarkerLite(this.m_raster, m_threshold);
                NyARDoublePoint2d[]        points   = null;
                List <NyARDoublePoint2d[]> ltPoints = new List <NyARDoublePoint2d[]>();
                if (detectedMkrs > 0)
                {
                    points = m_ar.getCorners(0);

                    ltPoints.Add(points);
                    for (int i = 1; i < detectedMkrs; i++)
                    {
                        NyARDoublePoint2d[] oMarkerPoints = m_ar.getCorners(i);
                        ltPoints.Add(oMarkerPoints);
                    }
                }

                Dispatcher.BeginInvoke(new Action(delegate()
                {
                    try
                    {
                        TransformedBitmap b = new TransformedBitmap();
                        b.BeginInit();
                        b.Source = BitmapSource.Create(w, h, 96.0, 96.0, PixelFormats.Bgr32, BitmapPalettes.WebPalette,
                                                       i_buffer, i_buffer_len, s);
                        b.SetValue(TransformedBitmap.TransformProperty, new ScaleTransform(-1, -1));
                        b.EndInit();
                        image1.SetValue(Image.SourceProperty, b);

                        if (points != null && points.Length == 4)
                        {
                            recognizedTag.Points = new PointCollection(new Point[]
                            {
                                new Point(cameraResX - points[0].x, cameraResY - points[0].y),
                                new Point(cameraResX - points[1].x, cameraResY - points[1].y),
                                new Point(cameraResX - points[2].x, cameraResY - points[2].y),
                                new Point(cameraResX - points[3].x, cameraResY - points[3].y)
                            });
                            recognizedTag.Visibility = System.Windows.Visibility.Visible;
                        }
                        else
                        {
                            recognizedTag.Visibility = System.Windows.Visibility.Hidden;
                        }

                        this.CvMainZm.Children.Clear();
                        for (int i = 1; i < ltPoints.Count; i++)
                        {
                            NyARDoublePoint2d[] oMarkerPoints = ltPoints[i];
                            Polygon oPolygon = new Polygon()
                            {
                                SnapsToDevicePixels = true,
                                Fill    = new SolidColorBrush(Colors.Violet),
                                Opacity = 0.8,
                                Stroke  = new SolidColorBrush(Colors.Red)
                            };

                            oPolygon.Points = new PointCollection(new Point[]
                            {
                                new Point(cameraResX - oMarkerPoints[0].x, cameraResY - oMarkerPoints[0].y),
                                new Point(cameraResX - oMarkerPoints[1].x, cameraResY - oMarkerPoints[1].y),
                                new Point(cameraResX - oMarkerPoints[2].x, cameraResY - oMarkerPoints[2].y),
                                new Point(cameraResX - oMarkerPoints[3].x, cameraResY - oMarkerPoints[3].y)
                            });
                            this.CvMainZm.Children.Add(oPolygon);
                        }
                    }
                    catch
                    {
                    }
                }), null);
            }
            catch
            {
            }
        }
        void CaptureListener.OnBuffer(CaptureDevice i_sender, double i_sample_time, IntPtr i_buffer, int i_buffer_len)
        {
            // calculate size of the frame bitmap
            int w = i_sender.video_width;
            int h = i_sender.video_height;
            int s = w * (i_sender.video_bit_count / 8); // stride


            AForge.Imaging.Filters.FiltersSequence seq = new AForge.Imaging.Filters.FiltersSequence();
            seq.Add(new AForge.Imaging.Filters.Grayscale(0.2125, 0.7154, 0.0721));
            seq.Add(new AForge.Imaging.Filters.Threshold(127));
            seq.Add(new AForge.Imaging.Filters.GrayscaleToRGB());
            AForge.Imaging.UnmanagedImage srcImg    = new AForge.Imaging.UnmanagedImage(i_buffer, w, h, s, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
            AForge.Imaging.UnmanagedImage outputImg = seq.Apply(srcImg);
            byte[] destArr = new byte[outputImg.Stride * outputImg.Height];
            System.Runtime.InteropServices.Marshal.Copy(outputImg.ImageData, destArr, 0, outputImg.Stride * outputImg.Height);
            this.m_raster.wrapBuffer(destArr);

            try
            {
                int        detectedMkrs = this.m_ar.detectMarkerLite(this.m_raster, m_threshold);
                NyARSquare square       = null;
                if (detectedMkrs > 0)
                {
                    NyARTransMatResult  transMat = new NyARTransMatResult();
                    NyARDoublePoint2d[] points   = m_ar.getCorners(0); // RichF added this method
                    square          = new NyARSquare();
                    square.sqvertex = points;
                }


                Dispatcher.BeginInvoke(new Action(delegate()
                {
                    TransformedBitmap b = new TransformedBitmap();
                    b.BeginInit();
                    b.Source = BitmapSource.Create(w, h, dpiX, dpiY, PixelFormats.Bgr32, BitmapPalettes.WebPalette, i_buffer, i_buffer_len, s);
                    b.SetValue(TransformedBitmap.TransformProperty, new ScaleTransform(-1, -1));
                    b.EndInit();
                    image1.SetValue(Image.SourceProperty, b);

                    if (square != null)
                    {
                        recognizedTag.Points = new PointCollection(new Point[] {
                            new Point(cameraResX - square.sqvertex[0].x, cameraResY - square.sqvertex[0].y),
                            new Point(cameraResX - square.sqvertex[1].x, cameraResY - square.sqvertex[1].y),
                            new Point(cameraResX - square.sqvertex[2].x, cameraResY - square.sqvertex[2].y),
                            new Point(cameraResX - square.sqvertex[3].x, cameraResY - square.sqvertex[3].y)
                        });

                        recognizedTag.Visibility = System.Windows.Visibility.Visible;
                    }
                    else
                    {
                        recognizedTag.Visibility = System.Windows.Visibility.Hidden;
                    }
                }), null);
            }
            catch
            {
            }
        }
Beispiel #7
0
        void CaptureListener.OnBuffer(CaptureDevice oCaptureDevice, double i_sample_time, IntPtr i_buffer,
                                      int i_buffer_len)
        {
            Dispatcher.Invoke(new Action(delegate()
            {
                if (this.IsMarkering)
                {
                    Bitmap oNewFrame = new Bitmap(800, 600, System.Drawing.Imaging.PixelFormat.Format32bppRgb);

                    #region Convert To Bitmap
                    BitmapData oBitmapData =
                        oNewFrame.LockBits(new System.Drawing.Rectangle(0, 0, oNewFrame.Width, oNewFrame.Height),
                                           ImageLockMode.ReadWrite, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
                    try
                    {
                        int w   = 800 * 4;
                        long st = (long)i_buffer + w * (600 - 1);
                        long et = (long)oBitmapData.Scan0;
                        for (int i = 600 - 1; i >= 0; i--)
                        {
                            CopyMemory((IntPtr)et, (IntPtr)st, w);
                            st -= w;
                            et += oBitmapData.Stride;
                        }
                    }
                    finally
                    {
                        oNewFrame.UnlockBits(oBitmapData);
                    }
                    #endregion

                    #region 灰度化
                    //var bitmapData = oNewFrame.LockBits(
                    //    new System.Drawing.Rectangle(0, 0, oNewFrame.Width, oNewFrame.Height),
                    //    System.Drawing.Imaging.ImageLockMode.ReadOnly, oNewFrame.PixelFormat);
                    //var bitmapSource = BitmapSource.Create(
                    //    bitmapData.Width, bitmapData.Height, 96, 96, PixelFormats.Bgr24, null,
                    //    bitmapData.Scan0, bitmapData.Stride * bitmapData.Height, bitmapData.Stride);
                    //oNewFrame.UnlockBits(bitmapData);

                    //this.ImgMainZm.Source = bitmapSource;
                    #endregion


                    AForge.Imaging.Filters.FiltersSequence seq = new AForge.Imaging.Filters.FiltersSequence();
                    seq.Add(new AForge.Imaging.Filters.Grayscale(0.2125, 0.7154, 0.0721));
                    seq.Add(new AForge.Imaging.Filters.Threshold(Threshold));
                    seq.Add(new AForge.Imaging.Filters.GrayscaleToRGB());
                    System.Drawing.Bitmap oFilterBitmap = seq.Apply(oNewFrame);

                    var bitmapData = oFilterBitmap.LockBits(
                        new System.Drawing.Rectangle(0, 0, oFilterBitmap.Width, oFilterBitmap.Height),
                        System.Drawing.Imaging.ImageLockMode.ReadOnly, oFilterBitmap.PixelFormat);
                    var bitmapSource = BitmapSource.Create(
                        bitmapData.Width, bitmapData.Height, 96, 96, PixelFormats.Bgr24, null,
                        bitmapData.Scan0, bitmapData.Stride * bitmapData.Height, bitmapData.Stride);
                    oFilterBitmap.UnlockBits(bitmapData);

                    this.ImgMainZm.Source = bitmapSource;

                    //TransformedBitmap b = new TransformedBitmap();
                    //b.BeginInit();
                    //b.Source = BitmapSource.Create(oCaptureDevice.video_width, oCaptureDevice.video_height, 96.0, 96.0,
                    //    PixelFormats.Bgr32, BitmapPalettes.WebPalette, i_buffer,
                    //    i_buffer_len, oCaptureDevice.video_width * (oCaptureDevice.video_bit_count / 8));
                    //b.SetValue(TransformedBitmap.TransformProperty, new ScaleTransform(-1, -1));
                    //b.EndInit();
                    //this.ImgMainZm.SetValue(Image.SourceProperty, b);

                    this.ARMarkerSystem.update(this.ARCameraSensor);
                    this.CvMainZm.Children.Clear();

                    if (this.ARMarkerSystem.isExistMarker(this.MarkerID_Hiro))
                    {
                        this.DrawARDetectInfo(this.MarkerID_Hiro, "Hiro");
                    }
                    if (this.ARMarkerSystem.isExistMarker(this.MarkerID_KanJi))
                    {
                        this.DrawARDetectInfo(this.MarkerID_KanJi, "KanJi");
                    }
                    if (this.ARMarkerSystem.isExistMarker(this.MarkerID_VTT))
                    {
                        this.DrawARDetectInfo(this.MarkerID_VTT, "VTT");
                    }
                    if (this.ARMarkerSystem.isExistMarker(this.MarkerID_ABB))
                    {
                        this.DrawARDetectInfo(this.MarkerID_ABB, "ABB");
                    }
                    if (this.ARMarkerSystem.isExistMarker(this.Marker_Hello))
                    {
                        this.DrawARDetectInfo(this.Marker_Hello, "Hello");
                    }
                }
            }));
        }