Exemplo n.º 1
0
        // Process new frame
        public void ProcessFrame(ref Bitmap image)
        {
            if (backgroundFrame == null)
            {
                // create initial backgroung image
                backgroundFrame = processingFilter1.Apply(image);

                // just return for the first time
                return;
            }

            Bitmap tmpImage;

            // apply the the first filters sequence
            tmpImage = processingFilter1.Apply(image);

            if (++counter == 2)
            {
                counter = 0;

                // move background towards current frame
                moveTowardsFilter.OverlayImage = tmpImage;
                Bitmap tmp = moveTowardsFilter.Apply(backgroundFrame);

                // dispose old background
                backgroundFrame.Dispose();
                backgroundFrame = tmp;
            }

            // set backgroud frame as an overlay for difference filter
            differenceFilter.OverlayImage = backgroundFrame;

            // apply the the second filters sequence
            Bitmap tmpImage2 = processingFilter2.Apply(tmpImage);

            tmpImage.Dispose();

            // extract red channel from the original image
            Bitmap redChannel = extrachChannel.Apply(image);

            //  merge red channel with moving object borders
            mergeFilter.OverlayImage = tmpImage2;
            Bitmap tmpImage3 = mergeFilter.Apply(redChannel);

            redChannel.Dispose();
            tmpImage2.Dispose();

            // replace red channel in the original image
            replaceChannel.ChannelImage = tmpImage3;
            Bitmap tmpImage4 = replaceChannel.Apply(image);

            tmpImage3.Dispose();

            image.Dispose();
            image = tmpImage4;
        }
Exemplo n.º 2
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);
        }
Exemplo n.º 3
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);
        }
Exemplo n.º 4
0
        private void ProcessFrame()
        {
            //Check for preprocess filter & filter to grey
            if (preFilter != null)
            {
                frame_pre = preFilter.Apply(frame_c);
                frame_gs  = gsFilter.Apply(frame_pre);
            }
            else
            {
                frame_gs = gsFilter.Apply(frame_c);
            }

            //Initialise Background
            if (back == null)
            {
                back = (Bitmap)frame_gs.Clone();
            }

            //Process frame for motion
            diffFilter.OverlayImage = back;
            frame_processed         = diffFilter.Apply(frame_gs);
            frame_processed         = motionFilter.Apply(frame_processed);

            CheckMotion();

            //Update Background
            morphFilter.OverlayImage = frame_gs;
            back = morphFilter.Apply(back);
        }
Exemplo n.º 5
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);
        }
Exemplo n.º 6
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);
     }));
 }
Exemplo n.º 7
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);
        }
Exemplo n.º 8
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);
        }
Exemplo n.º 9
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);
        }
Exemplo n.º 10
0
        private void ProcessFrameByRefindedMethod()
        {
            ++_frameCount;

            UnmanagedImage sourceCopy = _currentUnprocessed.Clone();

            _currentProcessed = _preprocessingFilters.Apply(sourceCopy);

            if (_previousProcessed != null && _featureRegion != null)
            {
                // track the feature
                _featureRegion.TrackFeature(_currentProcessed);

                // update cursor position
                UpdateCursor();

                // draw feature region
                Rectangle rect = new Rectangle(_featureRegion.Location.ToGDIPoint(), _featureRegion.Size);
                if (_featureRegion.IsLost)
                {
                    Drawing.Rectangle(sourceCopy, rect, Color.Red);
                }
                else
                {
                    Drawing.Rectangle(sourceCopy, rect, Color.Green);
                }

                RegionPictureBox.Image          = _featureRegion.FeatureImage.ToManagedImage();
                Invoke(() => AccuracyLabel.Text = string.Format("Last detection accuracy: {0:F4}", _featureRegion.Accuracy));
            }

            _previousProcessed = _currentProcessed;

            ImageBox.Image = sourceCopy.ToManagedImage();
        }
Exemplo n.º 11
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);
        }
Exemplo n.º 12
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);
        }
Exemplo n.º 13
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);
        }
Exemplo n.º 14
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);
        }
Exemplo n.º 15
0
        public static Image ToBlackAndWhite(this Image original)
        {
            var filtersSequence = new FiltersSequence {
                Grayscale.CommonAlgorithms.BT709, new OtsuThreshold()
            };

            return(filtersSequence.Apply((Bitmap)original));
        }
Exemplo n.º 16
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
        }
Exemplo n.º 17
0
        public static Image ToGrayScale(this Image original)
        {
            var filtersSequence = new FiltersSequence {
                Grayscale.CommonAlgorithms.BT709
            };

            return(filtersSequence.Apply((Bitmap)original));
        }
Exemplo n.º 18
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));
        }
Exemplo n.º 19
0
        protected void convertToGrayPicture()
        {
            FiltersSequence PigmentFilter = new FiltersSequence(new IFilter[]
            {
                Grayscale.CommonAlgorithms.BT709
            });

            this.image = PigmentFilter.Apply(this.image);
        }
Exemplo n.º 20
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;
        }
Exemplo n.º 21
0
        /// <summary>
        /// Scans  and returns suit of card. NOTE : Scans suit of cards that are not face cards
        /// For recognizing suit, analyzes color and size of suit blob
        /// </summary>
        /// <param name="suitBmp">Suit image to be scanned</param>
        /// <param name="color">Color of card. 'R' means Red, 'B' means black</param>
        /// <returns>Scanned Suit</returns>
        private Suit ScanSuit(Bitmap suitBmp, char color)
        {
            Bitmap             temp      = commonSeq.Apply(suitBmp);
            ExtractBiggestBlob extractor = new ExtractBiggestBlob(); //Extract biggest blob on card

            temp = extractor.Apply(temp);                            //Biggest blob is suit blob so extract it
            Suit suit = Suit.NOT_RECOGNIZED;

            //Determine type of suit according to its color and width
            if (color == 'B')
            {
                suit = temp.Width <= 45 ? Suit.Spades : Suit.Clubs;
            }
            if (color == 'R')
            {
                suit = temp.Height >= 53 ? Suit.Diamonds : Suit.Hearts;
            }


            return(suit);
        }
Exemplo n.º 22
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();
            }
        }
Exemplo n.º 24
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);
        }
Exemplo n.º 25
0
        /// <summary>
        /// </summary>
        /// <param name="bundle">
        /// </param>
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            this.SetContentView(Resource.Layout.Main);

            // Load image
            var filters = new FiltersSequence(Grayscale.CommonAlgorithms.BT709, new ResizeBicubic(512, 512));
            var tmp     = (System.Drawing.Bitmap)BitmapFactory.DecodeResource(this.Resources, Resource.Drawable.lena512);

            this.lenna = filters.Apply(tmp.Clone(PixelFormat.Format32bppArgb));

            this.transformImage = this.FindViewById <ImageView>(Resource.Id.TransformImage);
            this.transformImage.SetImageBitmap((Android.Graphics.Bitmap) this.lenna);

            // Populate the transforms spinner
            this.transformsSpinner = this.FindViewById <Spinner>(Resource.Id.TransformSpinner);

            var transformsAdapter = ArrayAdapter.CreateFromResource(
                this,
                Resource.Array.Transforms,
                Android.Resource.Layout.SimpleSpinnerItem);

            transformsAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            this.transformsSpinner.Adapter = transformsAdapter;

            // Configure the iterations spinner
            this.iterationsSpinner = this.FindViewById <Spinner>(Resource.Id.IterationsSpinner);

            var iterationsAdapter = ArrayAdapter.CreateFromResource(
                this,
                Resource.Array.Iterations,
                Android.Resource.Layout.SimpleSpinnerItem);

            iterationsAdapter.SetDropDownViewResource(Android.Resource.Layout.SimpleSpinnerDropDownItem);
            this.iterationsSpinner.Adapter = iterationsAdapter;

            // Define click handlers
            var forwardButton = this.FindViewById <Button>(Resource.Id.ForwardButton);

            forwardButton.Click += this.ForwardButtonOnClick;

            var backwardButton = this.FindViewById <Button>(Resource.Id.BackwardButton);

            backwardButton.Click += this.BackwardButtonOnClick;

            var originalButton = this.FindViewById <Button>(Resource.Id.OriginalButton);

            originalButton.Click += this.OriginalButtonOnClick;
        }
Exemplo n.º 26
0
        private void btnCardRank_Click(object sender, EventArgs e)
        {
            var  image  = Bitmap.FromFile(tbFile.Text) as Bitmap;
            Crop crop   = new Crop(_settings.MyCardsRect);//TODO card identity
            var  source = crop.Apply(image);

            FiltersSequence 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);              // Apply filters on source image


            BlobCounter extractor = new BlobCounter();

            extractor.FilterBlobs = true;
            extractor.MinWidth    = extractor.MinHeight = (int)_settings.MinCardSize;//TODO card size
            //extractor.MaxWidth = extractor.MaxHeight = 70;//TODO card size
            extractor.ProcessImage(temp);

            //Will be used transform(extract) cards on source image
            //QuadrilateralTransformation quadTransformer = new QuadrilateralTransformation();


            Bitmap cardImg = null;

            foreach (Blob blob in extractor.GetObjectsInformation())
            {
                cardImg = source.Clone(blob.Rectangle, PixelFormat.DontCare);
                break;
            }

            var r = _settings.CardRankRect;
            var f = new AreaSelectorForm(new Rectangle(r.X * 5, r.Y * 5, r.Width * 5, r.Height * 5));

            f.Text = "Select CardRankRect rect";

            f.SetImage(cardImg, 5);
            if (f.ShowDialog() == DialogResult.OK)
            {
                var newRect = new Rectangle(
                    (int)Math.Round(f.Rect.X / 5.0),
                    (int)Math.Round(f.Rect.Y / 5.0),
                    (int)Math.Round(f.Rect.Width / 5.0),
                    (int)Math.Round(f.Rect.Height / 5.0));
                lblCardRank.Text       = newRect.ToString();
                _settings.CardRankRect = newRect;
                AppSettingsManager.Save(_settings);
            }
        }
Exemplo n.º 27
0
        private void Tec1_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 OrderedDithering(matrix));
            ImgFinal.Image = filter.Apply(minhaImagem);
        }
Exemplo n.º 28
0
        public List <Bitmap> PreHandle2(Bitmap original)
        {
            var preOcr = new FiltersSequence(
                Grayscale.CommonAlgorithms.RMY,
                new BradleyLocalThresholding());

            var grayscale = preOcr.Apply(original);

            GrayImg.Source = Bitmap2BitmapImageSource(grayscale);

            var filter = new BlobsFiltering
            {
                CoupledSizeFiltering = true,
                MinHeight            = 6,
                MinWidth             = 6
            };
            var filterImage = filter.Apply(new Invert().Apply(grayscale));

            ThresholdImg.Source = Bitmap2BitmapImageSource(filterImage);

            var invertImg = new Invert().Apply(filterImage);

            DoneImg.Source = Bitmap2BitmapImageSource(invertImg);

            var labels = new ConnectedComponentsLabeling();

            labels.BlobCounter.ObjectsOrder = ObjectsOrder.XY;
            labels.Apply(filterImage);

            var bitmaps = new List <Bitmap>();

            for (int i = 0; i < labels.ObjectCount; i++)
            {
                var candidate = labels.BlobCounter.GetObjectsInformation()[i];
                var edgePoint = labels.BlobCounter.GetBlobsEdgePoints(candidate);
                labels.BlobCounter.ExtractBlobsImage(filterImage, candidate, false);
                if (candidate.Image != null)
                {
                    var charcter   = new Invert().Apply(candidate.Image.ToManagedImage());
                    var resizer    = new ResizeBilinear(10, 10);
                    var finalImage = resizer.Apply(charcter);
                    bitmaps.Add(finalImage);

                    TesseractEngine a = new TesseractEngine(@"./tessdata", "eng", EngineMode.TesseractAndCube);
                    Page            p = a.Process(finalImage);
                    TBlock.Text += p.GetText();
                }
            }
            return(bitmaps);
        }
Exemplo n.º 29
0
//--------------------------------------------------------------------
        private void process_motion()
        {
            IFilter filt = new GrayscaleY();
            currentFrame = filt.Apply(currentFrame);
            backgroundFrame = filt.Apply(backgroundFrame);
            FiltersSequence filters = new FiltersSequence();
            Morph filt_morph = new Morph();
            filt_morph.OverlayImage = currentFrame;
            Bitmap tmp = filt_morph.Apply(backgroundFrame);
            filters.Add(new Difference(tmp));
            filters.Add(new Threshold(15));
            Bitmap tmp1 = filters.Apply(currentFrame);
            alarm = CalculateWhitePixels(tmp1);
        }
Exemplo n.º 30
0
        public static Bitmap ApplyFilters02(Image img)
        {
            Bitmap imagem = new Bitmap(img);

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

            GaussianSharpen gs    = new GaussianSharpen();
            GaussianSharpen sharp = new GaussianSharpen(4, 21);
            FiltersSequence seq   = new FiltersSequence(gs, sharp);

            var filteredImage = seq.Apply(imagem);

            return(filteredImage);
        }