Beispiel #1
0
        private string reconhecerCaptcha(Image img)
        {
            Bitmap _bitmap = new Bitmap(img);

            _bitmap = _bitmap.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            FiltersSequence seq = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter);

            pictureBox1.Image = seq.Apply(_bitmap);
            string recognedString = OCR((Bitmap)pictureBox1.Image);

            return(recognedString);
        }
Beispiel #2
0
 public static Task <(Bitmap, string)> DeCaptchAsync(Image img)
 {
     return((Task <(Bitmap, string)>)Task.Run(() =>
     {
         string value;
         Bitmap bmp = new Bitmap(img);
         bmp = bmp.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
         Erosion erosion = new Erosion();
         Dilatation dilatation = new Dilatation();
         Invert inverter = new Invert();
         ColorFiltering cor = new ColorFiltering();
         //cor.Blue = new AForge.IntRange(200, 255);
         cor.Red = new AForge.IntRange(50, 255);
         //cor.Green = new AForge.IntRange(200, 255);
         Opening open = new Opening();
         BlobsFiltering bc = new BlobsFiltering()
         {
             MinHeight = 10
         };
         Closing close = new Closing();
         GaussianSharpen gs = new GaussianSharpen();
         ContrastCorrection cc = new ContrastCorrection();
         FiltersSequence seq = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter, dilatation);
         Image image = seq.Apply(bmp);
         value = OCR((Bitmap)image);
         return ((Bitmap)image, value);
     }));
 }
Beispiel #3
0
        private bool BlobCounter()
        {
            // lock image
            BitmapData bitmapData = _bitmap.LockBits(ImageLockMode.ReadWrite);

            // step 1 - turn background to black
            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red              = new IntRange(0, 64);
            colorFilter.Green            = new IntRange(0, 64);
            colorFilter.Blue             = new IntRange(0, 64);
            colorFilter.FillOutsideRange = false;

            colorFilter.ApplyInPlace(bitmapData);

            // step 2 - locating objects
            BlobCounter blobCounter = new BlobCounter();

            blobCounter.FilterBlobs = true;
            blobCounter.MinHeight   = 100;


            blobCounter.ProcessImage(bitmapData);
            Blob[] blobs = blobCounter.GetObjectsInformation();
            _bitmap.UnlockBits(bitmapData);

            // step 3 - check objects' type and highlight
            SimpleShapeChecker shapeChecker = new SimpleShapeChecker();

            using (var g = Graphics.FromImage(_bitmap))
                using (Pen pen = new Pen(Color.Red, 2)) {
                    for (int i = 0; i < blobs.Length; i++)
                    {
                        //Debug.WriteLine(String.Format("Blob {0}: W: {1}   H:{2}   ", i, blobs[i].Rectangle.Width, blobs[i].Rectangle.Height));

                        List <IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);
                        List <IntPoint> corners;

                        if (shapeChecker.IsConvexPolygon(edgePoints, out corners))
                        {
                            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Solid;
                            g.DrawRectangle(pen, blobs[i].Rectangle);
                        }
                    }
                }

            RectRight = new Rectangle();
            RectLeft  = new Rectangle();

            if (blobs.Length != 2 || blobs.Any(b => b.Rectangle.Width > 47))
            {
                return(false);
            }
            else
            {
                RectLeft  = blobs.OrderBy(b => b.Rectangle.Left).First().Rectangle;
                RectRight = blobs.OrderBy(b => b.Rectangle.Left).Last().Rectangle;
                return(true);
            }
        }
        public static Bitmap RGBfilter(Bitmap source)     // rgb 필터
        {
            ///////////// ini 객체 생성 시작 /////////////////////////////////////////////////////
            //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe
            FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe");
            string   pathini     = exefileinfo.Directory.FullName.ToString();      //프로그램 실행되고 있는데 path 가져오기
            string   fileName    = @"\PLOCRconfig.ini";                            // 환경설정 파일명
            string   filePath    = pathini + fileName;                             //ini 파일 경로

            DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌)
            //////////// ini 객체 생성 끝 /////////////////////////////////////////////////////////

            int redMin   = int.Parse(ini.GetIniValue("색상필터값", "RedMin"));
            int redMax   = int.Parse(ini.GetIniValue("색상필터값", "RedMax"));
            int greenMin = int.Parse(ini.GetIniValue("색상필터값", "GreenMin"));
            int greenMax = int.Parse(ini.GetIniValue("색상필터값", "GreenMax"));
            int blueMin  = int.Parse(ini.GetIniValue("색상필터값", "BlueMin"));
            int blueMax  = int.Parse(ini.GetIniValue("색상필터값", "BlueMax"));

            // create filter
            ColorFiltering filter = new ColorFiltering();

            // set color ranges to keep
            filter.Red   = new IntRange(redMin, redMax);
            filter.Green = new IntRange(greenMin, greenMax);
            filter.Blue  = new IntRange(blueMin, blueMax);
            Bitmap processedImage = filter.Apply(source);

            return(processedImage);
        }
Beispiel #5
0
        public static void FilterToRed(Bitmap img)
        {
            // create filter
            //EuclideanColorFiltering filter = new EuclideanColorFiltering();
            //// set center colol and radius
            //filter.CenterColor = new RGB(180, 30, 30);
            //filter.Radius = 30;
            //// apply the filter
            //filter.ApplyInPlace(img);

            //HSLFiltering filter = new HSLFiltering();
            //filter.Hue = new IntRange(0, 6); //these settings should works, if not
            //filter.Saturation = new Range(0.6f, 1f);
            //filter.Luminance = new Range(0.3f, 0.60f);
            ////filter

            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red   = new IntRange(140, 210);
            colorFilter.Green = new IntRange(0, 80);
            colorFilter.Blue  = new IntRange(0, 80);
            colorFilter.ApplyInPlace(img);

            //BlobsFiltering filter = new BlobsFiltering();
            //filter.CoupledSizeFiltering = true;
            //filter.MinWidth = 3;
            //filter.MinHeight = 3;
            //// apply the filter
            //filter.ApplyInPlace(img);
        }
Beispiel #6
0
        private void sonYeni(object sender, NewFrameEventArgs eventArgs)
        {
            pictureBox1.Image = (Bitmap)eventArgs.Frame.Clone();
            Bitmap video = (Bitmap)eventArgs.Frame.Clone();

            if (takip == 1)
            {
                ColorFiltering colorfilter = new ColorFiltering();
                colorfilter.Red   = new IntRange(Red, redMax);
                colorfilter.Green = new IntRange(Green, greenMax);
                colorfilter.Blue  = new IntRange(Blue, blueMax);
                colorfilter.ApplyInPlace(video);
                BlobCounter blobCounter = new BlobCounter();
                blobCounter.MinHeight    = 20;
                blobCounter.MinWidth     = 20;
                blobCounter.ObjectsOrder = ObjectsOrder.Size;
                blobCounter.ProcessImage(video);
                Rectangle[] rect = blobCounter.GetObjectsRectangles();
                if (rect.Length > 0)
                {
                    Rectangle obj = rect[0];
                    Graphics  gr  = Graphics.FromImage(video);
                    using (Pen pen = new Pen(Color.White, 3))
                    {
                        gr.DrawRectangle(pen, obj);
                    }
                    gr.Dispose();
                }
                pictureBox2.Image = video;
            }
        }
Beispiel #7
0
        public static Bitmap ApplyFilters03(Image img)
        {
            Bitmap image = new Bitmap(img);

            image = image.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            GaussianSharpen gs    = new GaussianSharpen();
            GaussianSharpen sharp = new GaussianSharpen(4, 21);
            ColorFiltering  cor   = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);

            //FiltersSequence seq = new FiltersSequence(gs);
            //var filteredImage = seq.Apply(image);

            //var image2 = AForge.Imaging.Image.Clone(image, PixelFormat.Format8bppIndexed);
            //AForge.Imaging.Image.SetGrayscalePalette(image2);


            //SISThreshold filter = new SISThreshold();
            //filter.ApplyInPlace(image2);
            return(image);
        }
Beispiel #8
0
        private Image <Gray, Byte> prepareImg3(System.Drawing.Image img, int threshold, bool invertImg)
        {
            // create filter
            ColorFiltering filter = new ColorFiltering();

            // set color ranges to keep
            //filter.Red = new AForge.IntRange(125, 255);
            //filter.Green = new AForge.IntRange(0, 95);
            //filter.Blue = new AForge.IntRange(0, 95);

            filter.Red   = new AForge.IntRange(METState.Current.target_R_min, METState.Current.target_R_max);
            filter.Green = new AForge.IntRange(METState.Current.target_G_min, METState.Current.target_G_max);
            filter.Blue  = new AForge.IntRange(METState.Current.target_B_min, METState.Current.target_B_max);


            // apply the filter
            Bitmap colorChannelImg = filter.Apply((Bitmap)img);


            temp_Image = colorChannelImg;
            Image <Gray, Byte> GrayImg = new Image <Gray, byte>((Bitmap)colorChannelImg);

            EmgImgProcssing = new ImageProcessing_Emgu();
            GrayImg         = EmgImgProcssing.Filter_Threshold2(GrayImg, threshold, invertImg).Erode(1).Dilate(1);

            return(GrayImg);
        }
Beispiel #9
0
        public static Bitmap ApplyFilters(Image img)
        {
            Bitmap imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            FiltersSequence seq           = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter);
            var             filteredImage = seq.Apply(imagem);

            return(filteredImage);
        }
Beispiel #10
0
        private void Button_Belirt_Click(object sender, EventArgs e)
        {
            Bitmap image = (Bitmap)pictureBox1.Image.Clone();

            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red   = new IntRange(red, (int)numericUpDownRed.Value);
            colorFilter.Green = new IntRange(green, (int)numericUpDownGreen.Value);
            colorFilter.Blue  = new IntRange(blue, (int)numericUpDownBlue.Value);
            colorFilter.ApplyInPlace(image);

            BlobCounter blobCounter = new BlobCounter();

            blobCounter.MinHeight = 100;
            blobCounter.MinWidth  = 300;

            blobCounter.ObjectsOrder = ObjectsOrder.Size;
            blobCounter.ProcessImage(image);

            Rectangle[] rectangle = blobCounter.GetObjectsRectangles(); // bundan bir daha oluştur
            if (rectangle.Length > 0)                                   //içerde beyazları tespit etmek için
            {
                size = rectangle[0].Size;
                //MessageBox.Show(size.ToString());
                Rectangle objectt = rectangle[0];
                Graphics  graphic = Graphics.FromImage(image);
                using (Pen pen = new Pen(Color.Turquoise, 10))
                {
                    graphic.DrawRectangle(pen, objectt);
                }
                graphic.Dispose();
            }
            pictureBox2.Image = image;
        }
 public ColorFilteringFilter()
 {
     _colorFiltering       = new ColorFiltering();
     _colorFiltering.Blue  = new AForge.IntRange(25, 230);
     _colorFiltering.Red   = new AForge.IntRange(25, 230);
     _colorFiltering.Green = new AForge.IntRange(25, 230);
 }
 private void InitializeFilters()
 {
     grayscaleFilter               = new Grayscale(0.299, 0.587, 0.114);
     bradleyLocalFilter            = new BradleyLocalThresholding();
     bradleyLocalFilter.WindowSize = 9;
     bradleyLocalFilter.PixelBrightnessDifferenceLimit = 0.01f;
     plateBlobsFiltering     = new BlobsFiltering(10, 20, 80, 66);
     blobCounter             = new BlobCounter();
     blobCounter.FilterBlobs = true;
     blobCounter.MinWidth    = 50;
     blobCounter.MinHeight   = 10;
     blobCounter.MaxWidth    = 520;
     blobCounter.MaxHeight   = 110;
     plateBlobCounter        = new BlobCounter();
     shapeChecker            = new SimpleShapeChecker();
     otsuThresholdFilter     = new OtsuThreshold();
     fillHoles = new FillHoles();
     fillHoles.MaxHoleWidth  = 100;
     fillHoles.MaxHoleHeight = 40;
     pen                             = new Pen(Color.GreenYellow, 4);
     openingFilter                   = new Opening();
     contrastCorrectionFilter        = new ContrastCorrection(80);
     colorFiltering                  = new ColorFiltering();
     colorFiltering.Red              = new IntRange(150, 255);
     colorFiltering.Green            = new IntRange(150, 255);
     colorFiltering.Blue             = new IntRange(150, 255);
     colorFiltering.FillOutsideRange = true;
     invert                          = new Invert();
 }
Beispiel #13
0
        public static void NajdiCasRustuVmisce(string slozka, int i)
        {
            /* Definice rozostøovacího filtru */
            GaussianBlur filterBlur = new GaussianBlur(10, 10);

            /* Definice modrého filtru */
            ColorFiltering filterGreen = new ColorFiltering();

            filterGreen.Red   = new IntRange(55, 80);
            filterGreen.Green = new IntRange(55, 100);
            filterGreen.Blue  = new IntRange(40, 65);


            /* Naètu si obrazky za každou misku */
            string[] seznamObrazku = Directory.GetFiles(slozka, "*.png", SearchOption.TopDirectoryOnly);

            /* Bitmap image1 = (Bitmap)Bitmap.FromFile(seznamObrazku[42]);
             * Bitmap image2 = (Bitmap)Bitmap.FromFile(seznamObrazku[43]);
             * string nazevObr = ObecneMetody.DatumCasZNazvu(seznamObrazku[42], "\\", ".png");
             * filterBlur.ApplyInPlace(image1);
             * image1.Save(slozka + "\\" + nazevObr + "_sedy.png");*/

            foreach (string obrazek in seznamObrazku)
            {
                Bitmap image    = (Bitmap)Bitmap.FromFile(obrazek);
                string nazevObr = ObecneMetody.DatumCasZNazvu(obrazek, "\\", ".png");
                filterBlur.ApplyInPlace(image);
                //filterGreen.ApplyInPlace(image);
                image.Save(slozka + "\\" + nazevObr + "_sedy.png");
                //Console.WriteLine(obrazek);
            }
        }
Beispiel #14
0
        private string reconhecerCaptcha(Image img)
        {
            Bitmap imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            GrayscaleRMY    gray = new GrayscaleRMY();
            Threshold       thr  = new Threshold(200);
            Difference      diff = new Difference(dilatation.Apply(imagem));
            FiltersSequence seq  = new FiltersSequence(diff, inverter, erosion, gray, thr, cc);

            pictureBox.Image = seq.Apply(imagem);
            string reconhecido = OCR((Bitmap)pictureBox.Image);

            return(reconhecido);
        }
Beispiel #15
0
        private string reconhecerCaptcha(Image img)
        {
            Bitmap imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            Erosion        erosion    = new Erosion();
            Dilatation     dilatation = new Dilatation();
            Invert         inverter   = new Invert();
            ColorFiltering cor        = new ColorFiltering();

            cor.Blue  = new AForge.IntRange(200, 255);
            cor.Red   = new AForge.IntRange(200, 255);
            cor.Green = new AForge.IntRange(200, 255);
            Opening            open  = new Opening();
            BlobsFiltering     bc    = new BlobsFiltering();
            Closing            close = new Closing();
            GaussianSharpen    gs    = new GaussianSharpen();
            ContrastCorrection cc    = new ContrastCorrection();

            bc.MinHeight = 10;
            FiltersSequence seq = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter);

            imagem = seq.Apply(imagem);
            //imagem.Save(Directory.GetCurrentDirectory() + "\\Captcha2.png", System.Drawing.Imaging.ImageFormat.Png);
            string reconhecido = OCR(imagem);

            //string reconhecido = ocr.Principal(Directory.GetCurrentDirectory() + "\\Captcha2.png");
            return(reconhecido);
        }
Beispiel #16
0
        private Bitmap LimparImagem(Image img)
        {
            var imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, img.Width, img.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            var inverter = new Invert();

            var cor = new ColorFiltering
            {
                Blue  = new AForge.IntRange(200, 255),
                Red   = new AForge.IntRange(200, 255),
                Green = new AForge.IntRange(200, 255)
            };

            var open = new Opening();
            var bc   = new BlobsFiltering();
            var gs   = new GaussianSharpen();
            var cc   = new ContrastCorrection();

            bc.MinHeight = 10;

            var seq = new FiltersSequence(gs, inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter);

            imagem = seq.Apply(imagem);
            return(imagem);
        }
Beispiel #17
0
        public void ProcessImage(string urlImage)       //Görüntünün işlendiği metot.
        {
            Stopwatch watch = Stopwatch.StartNew();     //Görüntünün işlenmesi sırasında süre tutulması için süre başlatılmaktadır.

            Bitmap root         = new Bitmap(urlImage); //Root Image (Default Image)
            Bitmap bmp          = new Bitmap(root);     //Resize Image
            Bitmap bmp1         = new Bitmap(root);     //Smoothing Image
            Bitmap bmp2         = new Bitmap(root);     //Color Filtering Image
            string outputstring = "";

            ///Root
            outputstring          = this.Ocr(root);
            txtNumbePlate1.Text   = outputstring;
            ptBNumberPlate1.Image = root;


            //Resize Image to : 1920x1080
            outputstring = "";
            ResizeBilinear filterr = new ResizeBilinear(1920, 1080);

            bmp = filterr.Apply(bmp);

            outputstring          = this.Ocr(bmp);
            txtNumbePlate2.Text   = outputstring;
            ptBNumberPlate2.Image = bmp;


            //Smoothing
            outputstring = "";
            if (BitmapFilter.GaussianBlur(bmp1, 4))
            {
                if (BitmapFilter.GaussianBlur(bmp1, 4))
                {
                    if (BitmapFilter.MeanRemoval(bmp1, 9))
                    {
                    }
                }
            }
            outputstring          = this.Ocr(bmp1);
            txtNumbePlate3.Text   = outputstring;
            ptBNumberPlate3.Image = bmp1;


            //Color Filtering
            outputstring = "";
            ColorFiltering filter = new ColorFiltering();

            filter.Green = new IntRange(175, 255);
            bmp2         = filter.Apply(bmp2);

            outputstring          = this.Ocr(bmp2);
            txtNumbePlate4.Text   = outputstring;
            ptBNumberPlate4.Image = bmp2;

            watch.Stop(); //Stop The Timer
            lblTime.Text  = String.Format("Total Time : {0} Seconds", watch.Elapsed.TotalSeconds);
            lblCount.Text = position.ToString() + "/" + lstimages.Count.ToString();
            System.Threading.Thread.Sleep(5000);
        }
Beispiel #18
0
 public Filter()
 {
     InitializeComponent();
     colorfilter = new ColorFiltering();
     // this.drawArea.Initialize();
     this.drawArea.Image       = (Bitmap)frmImgProcess.imgProcess.drawArea.Image;
     cb_FillType.SelectedIndex = 0;
     saveImgToXml = new SaveImageToXml();
 }
Beispiel #19
0
        //rgb
        private void RGB()
        {
            //crop();
            Bitmap     a          = new Bitmap(Original_Image.Image);
            Bitmap     bim        = (Bitmap)a.Clone();
            BitmapData bitmapData = bim.LockBits(
                new Rectangle(0, 0, bim.Width, bim.Height),
                ImageLockMode.ReadWrite, bim.PixelFormat);

            // step 1 - turn background to black
            ColorFiltering colorFilter = new ColorFiltering();

            colorFilter.Red              = new IntRange(130, 195);
            colorFilter.Green            = new IntRange(130, 195);
            colorFilter.Blue             = new IntRange(130, 195);
            colorFilter.FillOutsideRange = false;

            bm_crop = colorFilter.Apply(bitmapData);
            //  crop_image.Image = bm_crop;
            //pictureBox2.Image = bm_crop;
            //crop_image.Image = Original_Image.Image;
            //rgb
            Bitmap bm = (Bitmap)bm_crop; // crop_image.Image;
            //deklarasi variable
            double redColors   = 0;
            double greencolors = 0;
            double blueColor   = 0;
            double pixelColor  = 0;

            for (int y = 0; y < bm.Height; y++)
            {
                for (int x = 0; x < bm.Width; x++)
                {
                    Color c = bm.GetPixel(x, y);
                    if (c.R != 0 && c.G != 0 && c.B != 0)
                    {
                        pixelColor++;//jumlahpixel
                        //mengambil nilai rgb
                        redColors   += c.R;
                        greencolors += c.G;
                        blueColor   += c.B;
                    }
                }
            }
            //rata-rata nilai rgb
            double red   = (redColors / pixelColor);
            double green = (greencolors / pixelColor);
            double blue  = (blueColor / pixelColor);

            red   = Math.Round(red, 2);
            green = Math.Round(green, 2);
            blue  = Math.Round(blue, 2);
            //textbox
            txt_R.Text = red.ToString();
            txt_G.Text = green.ToString();
            txt_B.Text = blue.ToString();
        }
Beispiel #20
0
        public static void Face_Detection(Bitmap video)
        {
            ColorFiltering filter = new ColorFiltering();

            // set color ranges to keep
            filter.Red   = new IntRange(0, 75);
            filter.Green = new IntRange(0, 75);
            filter.Blue  = new IntRange(10, 255);
            filter.ApplyInPlace(video);
        }
Beispiel #21
0
        public ListBoxItem Save()
        {
            var redRange   = new AForge.IntRange((int)redNumericUpDown1.Value, (int)redNumericUpDown2.Value);
            var greenRange = new AForge.IntRange((int)greenNumericUpDown1.Value, (int)greenNumericUpDown2.Value);
            var blueRange  = new AForge.IntRange((int)blueNumericUpDown1.Value, (int)blueNumericUpDown2.Value);
            var filter     = new ColorFiltering(redRange, greenRange, blueRange);
            var text       = $"ColorFiltering ({redRange} - {greenRange} - {blueRange})";

            return(new ListBoxItem(text, filter));
        }
        /// <summary>
        /// Méthode qui analyse les images envoyées par le client
        /// Repère les formes présentes, les découpe et les enregistre en ficiers distincts
        /// </summary>
        public void ProcessImage()
        {
            using (CamCapturer.CamCapturer cam = new CamCapturer.CamCapturer())
            {
                Picture = cam.GetCapture();
                Copy    = cam.GetCapture();
            }

            ShapeChecker  = new SimpleShapeChecker();
            ShapeAnalyser = new BlobCounter();
            string date = DateTime.Now.Date.ToString("dMyyyy");

            FolderName = string.Format("Kuhlschrank-{0}", date);

            ShapeAnalyser.FilterBlobs = true;
            ShapeAnalyser.MinHeight   = 200;
            ShapeAnalyser.MinWidth    = 500;
            Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), FolderName));

            BitmapData bitData = Picture.LockBits(new Rectangle(0, 0, Picture.Width, Picture.Height), ImageLockMode.ReadWrite, Picture.PixelFormat);

            ColorFiltering filter = new ColorFiltering();

            filter.Red              = new IntRange(0, 64);
            filter.Green            = new IntRange(0, 64);
            filter.Blue             = new IntRange(0, 64);
            filter.FillOutsideRange = false;

            filter.ApplyInPlace(bitData);

            ShapeAnalyser.ProcessImage(bitData);
            Blob[] blobs = ShapeAnalyser.GetObjectsInformation();
            Picture.UnlockBits(bitData);

            for (int i = 0; i < blobs.Length; i++)
            {
                List <IntPoint> edgePoints = ShapeAnalyser.GetBlobsEdgePoints(blobs[i]);
                List <IntPoint> corners;
                ShapeChecker.IsConvexPolygon(edgePoints, out corners);

                IntPoint pt0 = corners[0];
                IntPoint pt1 = corners[1];
                IntPoint pt2 = corners[2];

                double width  = Math.Sqrt(Math.Pow(pt1.X - pt0.X, 2) + Math.Pow(pt1.Y - pt0.Y, 2));
                double height = Math.Sqrt(Math.Pow(pt2.X - pt1.X, 2) + Math.Pow(pt2.Y - pt1.Y, 2));

                Rectangle crop   = new Rectangle(corners[0].X, corners[1].Y, (int)width + 50, (int)height + 50);
                Bitmap    target = new Bitmap(crop.Width, crop.Height);
                using (Graphics gr = Graphics.FromImage(target))
                    gr.DrawImage(Copy, new Rectangle(0, 0, target.Width, target.Height), crop, GraphicsUnit.Pixel);

                target.Save(string.Format(@"{0}\{1}\crop{2}.jpg", Path.GetTempPath(), FolderName, i));
            }
        }
        public static void FilterColors(ref Bitmap bm, IntRange red, IntRange green, IntRange blue)
        {
            ColorFiltering colorFilter = new ColorFiltering
            {
                Red   = red,
                Green = green,
                Blue  = blue
            };

            colorFilter.ApplyInPlace(bm);
        }
Beispiel #24
0
        public void ApplyGrayFilter(Bitmap bmp)
        {
            var filter = new ColorFiltering();

            filter.Red   = new IntRange(150, 200);
            filter.Green = new IntRange(150, 200);
            filter.Blue  = new IntRange(150, 200);
            //filter.ApplyInPlace(img);
            var grayscale = new Grayscale(0.2125, 0.7154, 0.0721);
            var img       = grayscale.Apply(bmp);
        }
Beispiel #25
0
        public LaserDetect()
        {
            point = new Mrg.Point(-1, -1);
            //point = new AForge.Point(-1, -1);
            xPos        = yPos = 0;
            colorFilter = new ColorFiltering();

            colorFilter.Red   = new IntRange(150, 255); //150, 180
            colorFilter.Green = new IntRange(50, 120);  //0,90
            colorFilter.Blue  = new IntRange(80, 220);  //0,100
        }
Beispiel #26
0
        private void ActualizarFiltro()
        {
            ColorFiltering filtroColor = new ColorFiltering();

            filtroColor.Red   = red;
            filtroColor.Green = green;
            filtroColor.Blue  = blue;
            IFilter filtro = filtroColor;
            Bitmap  bmp    = new Bitmap(peCaptcha.Image);
            Bitmap  xImage = filtro.Apply(bmp);

            peCaptcha.Image = xImage;
        }
        private void ActualizarFiltro()
        {
            ColorFiltering FiltroColor = new ColorFiltering();

            FiltroColor.Red   = red;
            FiltroColor.Green = green;
            FiltroColor.Blue  = blue;
            IFilter Filtro = FiltroColor;
            Bitmap  bmp    = new Bitmap(pictureCapchaE.Image);
            Bitmap  XImage = Filtro.Apply(bmp);

            pictureCapchaE.Image = XImage;
        }
Beispiel #28
0
        public static Bitmap FilterImage(Bitmap originalBitmap)
        {
            var bitmap = new Bitmap(originalBitmap);

            var imagem      = bitmap.Clone(new System.Drawing.Rectangle(0, 0, bitmap.Width, bitmap.Height), System.Drawing.Imaging.PixelFormat.Format24bppRgb);
            var colorFilter = new ColorFiltering();

            colorFilter.FillColor = new RGB(255, 255, 255);
            colorFilter.Red       = colorFilter.Green = colorFilter.Blue = new IntRange(0, 40);
            colorFilter.ApplyInPlace(bitmap);
            bitmap = new FiltersSequence(colorFilter, new Invert(), new Erosion()).Apply(imagem);
            return(bitmap);
        }
        void FinalVideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;

            try
            {
                //kırmızı
                if (radioButton1.Checked)
                {
                    //ColorFilter'in yapildigi yer
                    ColorFiltering filter = new ColorFiltering();
                    int            a1     = int.Parse(textBox1.Text);
                    int            a2     = int.Parse(textBox2.Text);
                    int            a3     = int.Parse(textBox3.Text);
                    int            b1     = int.Parse(textBox4.Text);
                    int            b2     = int.Parse(textBox5.Text);
                    int            b3     = int.Parse(textBox6.Text);
                    filter.Red   = new IntRange(a1, b1);
                    filter.Green = new IntRange(a2, b2);
                    filter.Blue  = new IntRange(a3, b3);
                    filter.ApplyInPlace(image1);

                    //Görüntü üzerinde algilanan renk kare icine aliniyor
                    cevresiniciz(image1);
                }

                //mavi
                if (radioButton2.Checked)
                {
                    int a1 = int.Parse(textBox7.Text);
                    int a2 = int.Parse(textBox8.Text);
                    int a3 = int.Parse(textBox9.Text);
                    // Euclidean Color Filterin yapildigi yer
                    EuclideanColorFiltering filter = new EuclideanColorFiltering();
                    // Algilanacak renk belirleniyor ve orta noktasi belirleniyor
                    filter.CenterColor = new RGB(Color.FromArgb(a1, a2, a3));
                    filter.Radius      = 50;
                    // filtre calistiriliyor
                    filter.ApplyInPlace(image1);

                    //Görüntü üzerinde algilanan rengi cevrcevelemek veya hedeflemek icin gerekli Methodlar
                    cevresiniciz(image1);
                    //hedefal(image);
                }
            }
            catch { }
        }
Beispiel #30
0
            public BlobFinder(IDeviationProvider provider)
            {
                this.provider           = provider;
                BlobCounter             = new BlobCounter();
                BlobCounter.FilterBlobs = true;
                BlobCounter.MinHeight   = 5;
                BlobCounter.MinWidth    = 5;

                ColorFilter                  = new ColorFiltering();
                ColorFilter.Red              = new IntRange(0, 30);
                ColorFilter.Green            = new IntRange(0, 50);
                ColorFilter.Blue             = new IntRange(0, 30);
                ColorFilter.FillOutsideRange = false;
            }