Beispiel #1
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 #2
0
        private void button8_Click(object sender, EventArgs e)
        {
            FiltersSequence filter = new FiltersSequence();

            byte[,] matrix = new byte[3, 3]
            {
                { 10, 30, 60 },
                { 90, 120, 150 },
                { 180, 210, 240 }
            };
            filter.Add(new Grayscale(.3, .59, .11));
            filter.Add(new ErrorDiffusionToAdjacentNeighbors(
                           new int[3][] {
                new int[2] {
                    5, 3
                },
                new int[5] {
                    2, 4, 5, 4, 2
                },
                new int[3] {
                    2, 3, 2
                }
            }
                           ));
            ImgFinal.Image = filter.Apply(minhaImagem);
        }
Beispiel #3
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);
        }
        public VideoProcessor()
        {
            background = null;

            pixelateFilter           = new Pixellate();
            pixelateFilter.PixelSize = 10;

            differenceFilter = new Difference();
            thresholdFilter  = new Threshold(15);
            grayscaleFilter  = new Grayscale(0.2125, 0.7154, 0.0721);
            erosionFilter    = new Erosion();

            moveTowardsFilter = new MoveTowards();

            filters1 = new FiltersSequence();
            filters1.Add(pixelateFilter);
            filters1.Add(grayscaleFilter);

            filters2 = new FiltersSequence();

            filters2.Add(differenceFilter);
            filters2.Add(thresholdFilter);
            filters2.Add(erosionFilter);

            rat1 = new Tracker(640 / 2, 480 / 2, Color.Red);

            rat2 = new Tracker(400, 300, Color.Green);

            counter = 0;
        }
        public static IEnumerable <Bitmap> GetInnerBlobObjects(this Bitmap iBitmap)
        {
            var             biggestBlobObject = GetBlobObject(iBitmap);
            Bitmap          grayImage         = biggestBlobObject.ToGrayscale();
            FiltersSequence sq = new FiltersSequence();

            sq.Add(new BradleyLocalThresholding());
            sq.Add(new Invert());
            Bitmap revorsIMage = sq.Apply(grayImage);
            var    innerBlobs  = revorsIMage.GetBlobObjects(new Size(2, 2));
            int    rCounter    = innerBlobs.Count();

            return(innerBlobs);
            //Edges filter1 = new Edges();
            //var test3= filter1.Apply(biggestBlobObject);

            //HomogenityEdgeDetector filter2 = new HomogenityEdgeDetector();
            //var tesdasd2 = filter2.Apply(qwe);

            //DifferenceEdgeDetector filter3 = new DifferenceEdgeDetector();
            //var tesdasd322 = filter3.Apply(qwe);

            //SobelEdgeDetector filter4 = new SobelEdgeDetector();
            //var tesdasd3asdas22 = filter4.Apply(qwe);

            //CannyEdgeDetector filter45 = new CannyEdgeDetector( );
            //var tesdasd22 = filter45.Apply(qwe);
        }
Beispiel #6
0
        public static async Task <string> SaveNewPhoto(FileResult photo)
        {
            //Save in {App Directory}\img\{GUID}.jpg
            string path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "img", Guid.NewGuid().ToString() + ".jpg");

            //Canceled
            if (photo == null)
            {
                return(null);
            }

            //Create img folder if needed
            if (!Directory.Exists(Path.GetDirectoryName(path)))
            {
                Directory.CreateDirectory(Path.GetDirectoryName(path));
            }

            //Save the file to folder
            using (Stream stream = await photo.OpenReadAsync())
                using (Bitmap b = (Bitmap)ShimDrawing::System.Drawing.Image.FromStream(stream))
                    using (Stream img = File.OpenWrite(path))
                    {
                        FiltersSequence f = new FiltersSequence();
                        f.Add(new ResizeBilinear(800, (int)(800.0 * b.Height / b.Width)));

                        if (b.Height < b.Width)
                        {
                            f.Add(new RotateBilinear(-90));
                        }

                        f.Apply(ImageProcessor.Format(b)).Save(img, ShimDrawing::System.Drawing.Imaging.ImageFormat.Jpeg);
                    }

            return(path);
        }
Beispiel #7
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 #8
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);
     }));
 }
        private FiltersSequence commonSeq, extractCodeSeq, extractQRCodeSeqForRedTicket, extractQRCodeSeqForBlueTicket, qrReturnSeq;                          //Commonly filter sequence to be used

        public TicketRecognizer()
        {
            commonSeq      = new FiltersSequence();
            extractCodeSeq = new FiltersSequence();
            extractQRCodeSeqForRedTicket  = new FiltersSequence();
            extractQRCodeSeqForBlueTicket = new FiltersSequence();
            qrReturnSeq = new FiltersSequence();
            commonSeq.Add(new GrayscaleBT709());                            //灰度化
            commonSeq.Add(new SISThreshold());                              //二值化
            commonSeq.Add(new Invert());
            extractCodeSeq.Add(new Mean());                                 //均值滤波
            //extractCodeSeq.Add(new Invert());                            //黑白翻转
            extractQRCodeSeqForRedTicket.Add(new GrayscaleBT709());
            extractQRCodeSeqForRedTicket.Add(new DifferenceEdgeDetector());
            extractQRCodeSeqForRedTicket.Add(new SISThreshold());
            extractQRCodeSeqForRedTicket.Add(new Dilatation());


            extractQRCodeSeqForBlueTicket.Add(new GrayscaleBT709());
            extractQRCodeSeqForBlueTicket.Add(new DifferenceEdgeDetector());
            extractQRCodeSeqForBlueTicket.Add(new SISThreshold());
            extractQRCodeSeqForBlueTicket.Add(new Dilatation());

            qrReturnSeq.Add(new GrayscaleBT709());
            qrReturnSeq.Add(new Blur());
        }
Beispiel #10
0
        public CardRecognizer()
        {
            //Initialize common filter sequence , this sequence generally will be applied
            commonSeq = new FiltersSequence();
            commonSeq.Add(Grayscale.CommonAlgorithms.BT709);
            commonSeq.Add(new OtsuThreshold());
            commonSeq.Add(new DifferenceEdgeDetector());

            Stream          strm;
            BinaryFormatter bformat;

            AppDomain.CurrentDomain.AssemblyResolve += CurrentDomain_AssemblyResolve;

            strm    = File.Open("NetworkLetra.net", FileMode.Open);
            bformat = new BinaryFormatter();

            NetworkLetra = (FeedforwardNetwork)bformat.Deserialize(strm);

            strm    = File.Open("NetworkSuits.net", FileMode.Open);
            bformat = new BinaryFormatter();

            NetworkSuits = (FeedforwardNetwork)bformat.Deserialize(strm);

            strm    = File.Open("NetworkNumero.net", FileMode.Open);
            bformat = new BinaryFormatter();

            NetworkNumero = (FeedforwardNetwork)bformat.Deserialize(strm);

            AppDomain.CurrentDomain.AssemblyResolve -= CurrentDomain_AssemblyResolve;
        }
Beispiel #11
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 #12
0
        public FormAForge()
        {
            InitializeComponent();

            context         = new FilterContext();
            filtersSequence = new FiltersSequence();
            filtersSequence.Add(new FilterVisualization(new GrayscaleY(), context));
            filtersSequence.Add(new FilterVisualization(new GaussianBlur(), context));
            filtersSequence.Add(new FilterVisualization(new ResizeBicubic(160, 120), context));

            filtersSequence.Add(new RemoveBackground(context));
            filtersSequence.Add(new Normalization(context));
            filtersSequence.Add(new Binarization(context));
            //filtersSequence.Add(new FilterVisualization(new Invert(), context));
            //filtersSequence.Add(new FilterVisualization(new Opening(), context));
            filtersSequence.Add(new Blobs(context));

            foreach (IFilter filter in filtersSequence)
            {
                FilterVisualization visualization = filter as FilterVisualization;
                if (visualization != null)
                {
                    flowLayoutPanelFilters.Controls.Add(visualization);
                }
            }
        }
Beispiel #13
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 #14
0
        public Button RecognizeOneButton(Bitmap source, Rectangle rect, string filePath, int id)
        {
            var seq  = new FiltersSequence();
            var card = new Button(source); //Create Card Object

            card.Rect = rect;

            seq.Clear();

            seq.Add(Grayscale.CommonAlgorithms.BT709);
            seq.Add(new OtsuThreshold());
            source = seq.Apply(source);

            card.Tip = ScanButtonTip(source); //Scan Rank of non-face card

            //if (card.Tip == ButtonTip.NOT_RECOGNIZED)
            //{
            //    if (!string.IsNullOrEmpty(filePath))
            //    {
            //        while (File.Exists(filePath + id + ".bmp"))
            //            id++;
            //        top.Save(filePath + id + ".bmp", ImageFormat.Bmp);
            //    }
            //}

            return(card);
        }
Beispiel #15
0
        private FiltersSequence commonSeq;              //Commonly filter sequence to be used
        /// <summary>
        /// Constructor
        /// </summary>
        public CardRecognizer()
        {
            //Initialize common filter sequence , this sequence generally will be applied
            commonSeq = new FiltersSequence();
            commonSeq.Add(Grayscale.CommonAlgorithms.BT709);
            commonSeq.Add(new BradleyLocalThresholding());
            commonSeq.Add(new DifferenceEdgeDetector());


            //Load Templates From Resources ,
            //Templates will be used for template matching
            j        = miranda.ui.Properties.Resources.J;
            k        = miranda.ui.Properties.Resources.K;
            q        = miranda.ui.Properties.Resources.Q;
            clubs    = miranda.ui.Properties.Resources.Clubs;
            diamonds = miranda.ui.Properties.Resources.Diamonds;
            spades   = miranda.ui.Properties.Resources.Spades;
            hearts   = miranda.ui.Properties.Resources.Hearts;


            try
            {
                _engine = new TesseractEngine(@"./tessdata", "rus", EngineMode.Default);
                //_engine.SetVariable("tessedit_char_whitelist", "$.,0123456789");
            }
            catch (Exception ex)
            {
                Trace.TraceError(ex.ToString());
                Ex.Report(ex);
            }
        }
Beispiel #16
0
        public static Image ToBlackAndWhite(this Image original)
        {
            var filtersSequence = new FiltersSequence {
                Grayscale.CommonAlgorithms.BT709, new OtsuThreshold()
            };

            return(filtersSequence.Apply((Bitmap)original));
        }
Beispiel #17
0
        public static Bitmap ToGrayScale(this Bitmap image)
        {
            var seq = new FiltersSequence();

            seq.Add(Grayscale.CommonAlgorithms.BT709);  //First add  GrayScaling filter
            seq.Add(new OtsuThreshold());               //Then add binarization(thresholding) filter
            return(seq.Apply(image));                   // Apply filters on source image
        }
Beispiel #18
0
        public static Image ToGrayScale(this Image original)
        {
            var filtersSequence = new FiltersSequence {
                Grayscale.CommonAlgorithms.BT709
            };

            return(filtersSequence.Apply((Bitmap)original));
        }
Beispiel #19
0
        public static Image ToGrayScale(this Image original, PixelFormat pixelFormat = PixelFormat.Indexed)
        {
            var filtersSequence = new FiltersSequence {
                Grayscale.CommonAlgorithms.BT709
            };
            var bitmap = filtersSequence.Apply((Bitmap)original);

            return(AForge.Imaging.Image.Clone(bitmap, pixelFormat));
        }
Beispiel #20
0
        protected void convertToGrayPicture()
        {
            FiltersSequence PigmentFilter = new FiltersSequence(new IFilter[]
            {
                Grayscale.CommonAlgorithms.BT709
            });

            this.image = PigmentFilter.Apply(this.image);
        }
Beispiel #21
0
        /// <summary>Handles the Load event of the frmBadgeCreator control.</summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs"/> instance containing the event data.</param>
        private void frmBadgeCreator_Load(object sender, EventArgs e)
        {
            lsvFilterStack.Items.Clear();
            filterStack = new FiltersSequence();

            LoadDitheringModes();

            LoadOldSettings();
        }
Beispiel #22
0
        private static string ExtractText(Bitmap bmp)
        {
            // create filter
            var resizeBilinear = new ResizeBilinear(bmp.Width * 2, bmp.Height * 2);
            var greyScale      = new Grayscale(0.2125, 0.7154, 0.0721);

            var biggerImage = new FiltersSequence(resizeBilinear).Apply(bmp);

            return(string.Join(", ", TesseractTestBase.ExtractText(biggerImage)));
        }
Beispiel #23
0
        private void Init()
        {
            _frameSize = new Size(ImageBox.Width, ImageBox.Height);

            _normalizatorFilters = new FiltersSequence(
                new ResizeBilinear(_frameSize.Width, _frameSize.Height));

            _preprocessingFilters = new FiltersSequence(
                Grayscale.CommonAlgorithms.RMY);
        }
Beispiel #24
0
        private void button1_Click(object sender, EventArgs e)
        {
            var source = pbSelectedPicture.Image as Bitmap;
            var seq    = new FiltersSequence();

            seq.Add(Grayscale.CommonAlgorithms.BT709); //First add  grayScaling filter
            seq.Add(new OtsuThreshold());              //Then add binarization(thresholding) filter
            var temp = seq.Apply(source);

            pbProcessedPicture.Image = temp;
        }
Beispiel #25
0
        public System.Drawing.Bitmap getGrayPicture()
        {
            System.Drawing.Bitmap cloneImage    = AForge.Imaging.Image.Clone(this.image);
            FiltersSequence       PigmentFilter = new FiltersSequence(new IFilter[]
            {
                Grayscale.CommonAlgorithms.BT709
            });

            cloneImage         = PigmentFilter.Apply(cloneImage);
            this.grayImageByte = this.imageToByteArray(cloneImage);
            return(cloneImage);
        }
        // Process max 200 frames (5 min) in 320x240 resolution. So 76KB memory per frame (grayscale). 1200 frames is max 93 MB of RAM (normally less because of area)
        private void processFilePart()
        {
            int nrofframes = imageStack.Length;
            int i;
            int sum;
            // create filters
            Morph morphFilter = new Morph(); // filter for adapting background

            morphFilter.SourcePercent = 0.8;
            Difference      differenceFilter = new Difference();      // filter for subtracting two frames
            Threshold       thresholdFilter  = new Threshold();       // filter for thresholding
            FiltersSequence filters          = new FiltersSequence(); // all filters in one

            filters.Add(morphFilter);
            filters.Add(differenceFilter);
            filters.Add(thresholdFilter);
            thresholdFilter.ThresholdValue = threshold;
            // Process here
            for (i = 0; i < nrofframes; i++)
            {
                // move background towards current frame
                morphFilter.OverlayImage = imageStack[i];
                Bitmap Temp = morphFilter.Apply(backgroundFrame);
                backgroundFrame = Temp.Clone(new Rectangle(0, 0, Temp.Width, Temp.Height), Temp.PixelFormat);
                Temp.Dispose();
                // apply rest of the filters
                differenceFilter.OverlayImage = imageStack[i];
                Bitmap Temp2 = filters.Apply(backgroundFrame);
                sum = 0;
                // Calculate sum of white pixels
                for (int j = 0; j < Temp2.Width; j++)
                {
                    for (int k = 0; k < Temp2.Height; k++)
                    {
                        if (Temp2.GetPixel(j, k) != Color.FromArgb(255, 0, 0, 0))
                        {
                            sum += 1;
                        }
                    }
                }
                Temp2.Dispose();
                if (sum > objectsize)
                {
                    tracker.addFrame(currentFrame);
                }
                currentFrame += 1;
            }
            // Discard Array
            for (i = 0; i < nrofframes; i++)
            {
                imageStack[i].Dispose();
            }
        }
Beispiel #27
0
        private bool IsNotNumber(Bitmap source)
        {
            var template = Resources.PlayerEmpty;
            var temp     = source.Clone() as Bitmap; //Clone image to keep original image

            var seq = new FiltersSequence();

            seq.Add(Grayscale.CommonAlgorithms.BT709);
            temp = seq.Apply(source); // Apply filters on source image

            var templ = seq.Apply(template);

            var templateMatchin = new ExhaustiveTemplateMatching(0.9f);

            TemplateMatch[] templates;
            if (
                temp.Width < template.Width
                ||
                temp.Height < template.Height
                )
            {
                templates = templateMatchin.ProcessImage(templ, temp);
            }
            else
            {
                templates = templateMatchin.ProcessImage(temp, templ);
            }

            var res = templates.Length > 0;


            template = Resources.PlayerMissing;
            templ    = seq.Apply(template);

            templateMatchin = new ExhaustiveTemplateMatching(0.9f);
            TemplateMatch[] templates2;
            if (
                temp.Width < template.Width
                ||
                temp.Height < template.Height
                )
            {
                templates2 = templateMatchin.ProcessImage(templ, temp);
            }
            else
            {
                templates2 = templateMatchin.ProcessImage(temp, templ);
            }

            res |= templates2.Length > 0;
            return(res);
        }
Beispiel #28
0
        private IEnumerable <BobbyLocation> PointOfScreenDifferences()
        {
            var castbmp          = Win32.CaptureWindow(_wow);
            var processingFilter = new FiltersSequence
            {
                new Grayscale(0.3725, 0.6154, 0.0121),
                new Pixellate(),
                new Difference(_background),
                new Threshold(15),
                new Erosion()
            };

            var blobCounter = new BlobCounter();

            blobCounter.ProcessImage(processingFilter.Apply(castbmp));

            var brl = blobCounter.GetObjectsRectangles();

            Log.Information("Bobber imagescan brl: {brl}", brl.Length);
            var sdl = new List <BobbyLocation>();

            foreach (var br in brl)
            {
                var pt = new Win32.Point {
                    x = (br.Left + br.Left + br.Right) * 4 / 12, y = (br.Top + br.Bottom + br.Bottom) * 4 / 12
                };
                Win32.ClientToScreen(_wow, ref pt);
                if (br.Right - br.Left > 9 && br.Bottom - br.Top > 9)
                {
//                    Win32.Point pt = new Win32.Point { x= wowRectangle.X+(br.Left + br.Right) / 2, y= wowRectangle.Y+(br.Top+br.Bottom)/2 };
                    Log.Information("Bobber imagescan br: {bx},{by} - {w},{h}", pt.x, pt.y, br.Right - br.Left, br.Bottom - br.Top);
                    sdl.Add(new BobbyLocation(pt));
//                } else {
//                    Log.Information("Bobber imagescan ignore br: {bx},{by} - {w},{h}", pt.x,pt.y, (br.Right-br.Left),(br.Bottom-br.Top));
                }
            }
            // debug

            /*
             * BitmapExt bmpDst = new BitmapExt(castbmp);
             * using (var g = Graphics.FromImage(bmpDst)) {
             *  foreach (var br in brl) {
             *      if ((br.Right - br.Left) > 11 && (br.Bottom - br.Top) > 11) {
             *          g.DrawRectangle(Pens.White, br);
             *      }
             *  }
             * }
             * bmpDst.Save("sc_"+DateTime.UtcNow.Ticks+".png", ImageFormat.Png);
             */

            return(sdl);
        }
Beispiel #29
0
 private void InitFilters()
 {
     gsFilter     = new Grayscale(0.33, 0.33, 0.33);
     diffFilter   = new Difference();
     motionFilter = new FiltersSequence();
     motionFilter.Add(new Threshold(THRESHOLD));
     motionFilter.Add(new BlobsFiltering(MIN_BLOB, MIN_BLOB, MAX_BLOB, MAX_BLOB, true));
     morphFilter = new Morph();
     morphFilter.SourcePercent = MORPH_PERCENT;
     blobCount           = new BlobCounter();
     blobCount.MinHeight = MIN_BLOB;
     blobCount.MaxHeight = MAX_BLOB;
 }
Beispiel #30
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);
        }