Esempio n. 1
0
        private void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image = (Bitmap)eventArgs.Frame.Clone();

            Console.WriteLine(image.Width + " -- " + image.Height);
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;

            if (radioButtonKırmızı.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                Nesnetespit(image1);
            }
            if (radioButtonMavi.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(30, 144, 215));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                Nesnetespit(image1);
            }
            if (radioButtonYeşil.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(0, 215, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                Nesnetespit(image1);
            }
            if (radioButtonElleKontrol.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                Nesnetespit(image1);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// The ColorFilter is applied with the ColorRange from the colony.
        /// </summary>
        public void FilterImgColonySelect()
        {
            // CREATE NEW BITMAP IMAGE
            this.bitmap = new Bitmap((Bitmap)pictureBox.Image);

            // LOCK IMAGE
            this.bitmapData = bitmap.LockBits(
                new Rectangle(0, 0, bitmap.Width, bitmap.Height),
                ImageLockMode.ReadWrite, bitmap.PixelFormat);

            // CREATE NEW FILTER
            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            // SET COLOR RANGE FOR BACKGROUND
            filter.CenterColor = ColonyColor;
            filter.Radius      = 100;

            // APPLY FILTER ON IMAGE
            filter.ApplyInPlace(bitmapData);
        }
Esempio n. 3
0
        //*****************************************

        void cam_goruntu_new_frame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image   = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1  = (Bitmap)eventArgs.Frame.Clone();
            var    filter2 = new Mirror(false, true);

            filter2.ApplyInPlace(image1);
            var filter = new Mirror(false, true);

            filter.ApplyInPlace(image);
            pictureBox1.Image = image;


            EuclideanColorFiltering filter1 = new EuclideanColorFiltering();

            filter1.CenterColor = new RGB(Color.FromArgb(10, 14, 200));
            filter1.Radius      = 100;
            filter1.ApplyInPlace(image1);
            nesnebul(image1);
        }
Esempio n. 4
0
        private void kamera_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image     = (Bitmap)eventArgs.Frame.Clone();
            Bitmap reelimage = (Bitmap)eventArgs.Frame.Clone();

            image.RotateFlip(RotateFlipType.Rotate180FlipY);
            reelimage.RotateFlip(RotateFlipType.Rotate180FlipY);

            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0)); // Algılanacak Renk ve merkez noktası bulunur.
            filter.Radius      = 120;
            filter.ApplyInPlace(image);                              //Filitre Çalıştırılır.

            cevreal(image);                                          // Algilanan rengi Çevrçevelemek veya hedeflemek için gerekli Method.
                                                                     // cevreal(reelimage);

            pictureBox2.Image = reelimage;
            pictureBox1.Image = image;
        }
Esempio n. 5
0
        private void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;

            if (radioButton4.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }
            if (radioButton1.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(191, 0, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }

            if (radioButton3.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(30, 144, 255));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }
            if (radioButton2.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(0, 215, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }
        }
Esempio n. 6
0
        void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image = (Bitmap)eventArgs.Frame.Clone();

            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            image.RotateFlip(RotateFlipType.RotateNoneFlipX);
            image1.RotateFlip(RotateFlipType.RotateNoneFlipX);

            pictureBox1.Image = image;


            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
            filter.Radius      = 100;

            filter.ApplyInPlace(image1);

            nesnebul(image1);
        }
Esempio n. 7
0
        private static Bitmap ApplyEuclideanColorFilter(Bitmap bitmap)
        {
            // create filter
            // ColorFiltering filter = new ColorFiltering( );
            // // set color ranges to keep
            // filter.Red   = new IntRange( 30, 100 );
            // filter.Green = new IntRange( 60, 180 );
            // filter.Blue  = new IntRange( 120, 255 );
            // // apply the filter
            //
            // var filteredBitmap = filter.Apply( bitmap );
            var filter = new EuclideanColorFiltering
            {
                CenterColor = new RGB(Color.FromArgb(10, 79, 170)),
                Radius      = 70
            };

            var filteredBitmap = filter.Apply(bitmap);

            return(filteredBitmap);
        }
        /* FinalFrame_NewFrame is an event Handler which gets fired every time the webcam captures a fresh image.
         * This allows image data to be intercepted and different image processing techniques can be applied.*/
        private void VideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;


            //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            // pictureBox1.Image = image;
            /*  Insert break-point here to view width and height of video in the ‘Locals’ Window. */

            if (radiobtnRed.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                ProcessIMG(image1);
            }



            if (radiobtnBlue.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(30, 144, 255));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                ProcessIMG(image1);
            }
        }
Esempio n. 9
0
        private void TakeSnapshot_funct(Bitmap img)
        {
            Bitmap image = Grayscale.CommonAlgorithms.RMY.Apply(img);

            // find edges
            SobelEdgeDetector EdgeFilter = new SobelEdgeDetector();

            EdgeFilter.ApplyInPlace(image);
            // back to color format
            GrayscaleToRGB RGBfilter = new GrayscaleToRGB();

            image = RGBfilter.Apply(image);
            // get rid of grays
            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor.Red   = 20;
            filter.CenterColor.Green = 20;
            filter.CenterColor.Blue  = 20;
            filter.FillOutside       = false;
            filter.Radius            = 200;
            filter.ApplyInPlace(image);

            Color peek;

            for (int y = 0; y < image.Height; y++)
            {
                for (int x = 0; x < image.Width; x++)
                {
                    peek = image.GetPixel(x, y);
                    if (peek.R != 0)
                    {
                        image.SetPixel(x, y, Color.Blue);
                    }
                }
            }

            image.MakeTransparent(Color.Black);
            SnapshotImage         = image;
            SnapshotOriginalImage = image;
        }
        private void kullanilacakcihaz_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            image             = new Mirror(false, true).Apply(image);
            görüntü_box.Image = image;
            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor = new RGB(Color.FromArgb(red, green, blue)); // Algılanacak Renk ve merkez noktası bulunur.
            filter.Radius      = 80;
            filter.ApplyInPlace(image1);                                    //Filitre Çalıştırılır.
            cevreal(image1);                                                // Algilanan rengi Çevrçevelemek veya hedeflemek için gerekli Method.
            BlobsFiltering filter2 = new BlobsFiltering( );                 // Belirli Piksel Altındaki Görüntüler Alınmadı.

            filter2.CoupledSizeFiltering = true;
            filter2.MinWidth             = 100;
            filter2.MinHeight            = 60;
            filter2.ApplyInPlace(image1);
            image1            = new Mirror(false, true).Apply(image1);
            pictureBox2.Image = image1;
        }
Esempio n. 11
0
        private void final_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap goruntu  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap goruntu2 = (Bitmap)eventArgs.Frame.Clone();
            Mirror filter2  = new Mirror(false, true);

            filter2.ApplyInPlace(goruntu);
            pictureBox1.Image = goruntu;

            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
            filter.Radius      = 100;
            Mirror filter1 = new Mirror(false, true);

            filter1.ApplyInPlace(goruntu2);
            filter.ApplyInPlace(goruntu2);
            nesnebul(goruntu2);
            dongu(goruntu2);

            OtsuThreshold otsuFiltre = new OtsuThreshold();
        }
Esempio n. 12
0
        private Bitmap getWebcamPic(NewFrameEventArgs eventArgs)
        {
            Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();

            //  Threshold filter = new Threshold((int)tresholdNumeric.Value);
            //   Grayscale GRfilter = new Grayscale(0.2125, 0.7154, 0.0721);
            EuclideanColorFiltering euclidFilter = new EuclideanColorFiltering(new RGB((byte)RNumeric.Value, (byte)GNumeric.Value, (byte)BNumeric.Value), (byte)radiusNumeric.Value);
            var Mir = new Mirror(false, true);

            Mir.ApplyInPlace(bitmap);

            Rectangle   cloneRect = new Rectangle(0, 0, 320, 240);
            PixelFormat format    =
                bitmap.PixelFormat;
            Bitmap cloneBitmap = bitmap.Clone(cloneRect, format);

            euclidFilter.ApplyInPlace(cloneBitmap);
            // Bitmap grayImage = GRfilter.Apply(cloneBitmap);
            //   filter.ApplyInPlace(grayImage);

            return(cloneBitmap);
        }
Esempio n. 13
0
        void FinalVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Icon                    newIcon = new Icon(@"c:\users\gregster\documents\visual studio 2012\Projects\WebCamTrack\WebCamTrack\bin\Debug\favicon.ico");
            BlobCounter             bc      = new BlobCounter();
            EuclideanColorFiltering filter  = new EuclideanColorFiltering();
            Bitmap                  video   = (Bitmap)eventArgs.Frame.Clone(); //sem filtro
            Bitmap                  video1  = (Bitmap)eventArgs.Frame.Clone(); // imagem com filtro

            //
            filter.CenterColor = new RGB(0, 0, 0);
            filter.Radius      = 100;
            filter.ApplyInPlace(video1);//aplicando o filtro
            bc.MinWidth    = 5;
            bc.MinHeight   = 5;
            bc.FilterBlobs = true;
            //  bc.ObjectsOrder = ObjectsOrder.Size;
            bc.ProcessImage(video1);// processando a imagem que ja foi filtrada para identificar objetos
            Rectangle[] rects = bc.GetObjectsRectangles();
            foreach (Rectangle recs in rects)
            {
                if (rects.Length > 0)
                {
                    Rectangle objectRect = rects[0];
                    Graphics  g          = Graphics.FromImage(video);//identificar objetos a partir da imagem com filtro
                    Graphics  h          = Graphics.FromImage(video1);
                    using (Pen pen = new Pen(Color.FromArgb(160, 255, 160), 5))
                    {
                        g.DrawIcon(newIcon, objectRect);
                        // g.DrawRectangle(pen, objectRect);
                        h.DrawRectangle(pen, objectRect);
                    }
                    g.Dispose();
                    h.Dispose();
                }
            }
            pictureBox1.Image = video;
            pictureBox2.Image = video1;
        }
Esempio n. 14
0
        public BlobCounter AnalyzePicture(TargetProfile target, System.Drawing.Bitmap porcessedImg)
        {
            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor = new RGB(target.Color);
            filter.Radius      = target.FilterRadius;
            filter.ApplyInPlace(porcessedImg);

            BlobCounter blobCounter = new BlobCounter();

            blobCounter.MinWidth     = target.MinSize;
            blobCounter.MinHeight    = target.MinSize;
            blobCounter.FilterBlobs  = true;
            blobCounter.ObjectsOrder = ObjectsOrder.Size;
            blobCounter.MaxWidth     = blobCounter.MaxHeight = target.MaxSize;

            System.Drawing.Imaging.BitmapData objectsData = porcessedImg.LockBits(new System.Drawing.Rectangle(0, 0, porcessedImg.Width, porcessedImg.Height), ImageLockMode.ReadOnly, porcessedImg.PixelFormat);
            Grayscale      grayscaleFilter = new Grayscale(0.2125, 0.7154, 0.0721);
            UnmanagedImage grayImage       = grayscaleFilter.Apply(new UnmanagedImage(objectsData));

            porcessedImg.UnlockBits(objectsData);
            return(blobCounter);
        }
Esempio n. 15
0
        void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;
            if (rdiobtnKirmizi.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }
            if (rdbtnElleBelirleme.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
                filter.Radius      = 100;
                filter.ApplyInPlace(image1);
                nesnebul(image1);
            }
        }
Esempio n. 16
0
        void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;



            if (radio_red.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);


                nesnebul(image1);
            }

            if (radio_blue.Checked) //blue
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center color and radius
                filter.CenterColor = new RGB(Color.FromArgb(30, 144, 255));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                nesnebul(image1);
            }
            if (radio_green.Checked) // Green

            // create filter
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center color and radius
                filter.CenterColor = new RGB(Color.FromArgb(0, 215, 0));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                nesnebul(image1);
            }

            if (radiowhite.Checked)
            { // Green
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center color and radius
                filter.CenterColor = new RGB(Color.FromArgb(255, 255, 255));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                nesnebul(image1);
            }


            if (radi_manual_selection.Checked)//Manual Selection
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                nesnebul(image1);
            }
        }
Esempio n. 17
0
        /// <summary>
        /// Performs EuclidColorFilter, BlobCouter and Template Matching
        /// Input: image
        /// </summary>
        /// <param name="sourceImage">From Region Selection</param>
        /// <param name="blobedImage"></param>
        /// <param name="findingsImage"></param>
        public void chefEuclidFilter(Bitmap sourceImage, out List <string> similarity, out Point click, out Bitmap blobedImage, out Bitmap findingsImage)
        {
            Point cp = new Point();

            similarity = new List <string>();
            Bitmap sourceClone = sourceImage.Clone(
                new Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
                sourceImage.PixelFormat);
            EuclideanColorFiltering euFilter = new EuclideanColorFiltering();
            Bitmap filteredBitmap            = sourceImage.Clone(
                new Rectangle(0, 0, sourceImage.Width, sourceImage.Height),
                sourceImage.PixelFormat);

            euFilter.CenterColor = new AForge.Imaging.RGB(Color.FromArgb(211, 203, 202, 200));
            euFilter.Radius      = 25;
            euFilter.ApplyInPlace(filteredBitmap);

            int blobCtr = 0;

            unsafe
            {
                BitmapData bitData = filteredBitmap.LockBits(
                    new Rectangle(0, 0, filteredBitmap.Width, filteredBitmap.Height),
                    ImageLockMode.ReadOnly, filteredBitmap.PixelFormat);

                blobCounter             = new BlobCounter();
                blobCounter.FilterBlobs = true;
                blobCounter.ProcessImage(bitData);

                Blob[] blobs = blobCounter.GetObjectsInformation();

                ExhaustiveTemplateMatching tempalteMatching = new ExhaustiveTemplateMatching(treshold);

                //Loop on Images
                int errorOffset = 3;
                foreach (var item in recipe)
                {
                    foreach (var blob in blobs)
                    {
                        //Detected too small
                        if (blob.Rectangle.Width <= errorOffset)
                        {
                            continue;
                        }
                        //out of screen
                        if (((blob.Rectangle.X) - errorOffset) < 0)
                        {
                            continue;
                        }
                        int estimateY = (blob.Rectangle.Y + yOffset);
                        int estimateX = (blob.Rectangle.X + xOffset);

                        if (!(estimateY >= sourceImage.Size.Height) && !(estimateX >= sourceImage.Size.Width))
                        {
                            //Hightlight blobs
                            Drawing.Rectangle(bitData, blob.Rectangle, Color.Red);
                            blobCtr++;

                            //Finder Block Size
                            Rectangle rectSize = new Rectangle(
                                blob.Rectangle.X - errorOffset, blob.Rectangle.Y - errorOffset,
                                64, 64);

                            TemplateMatch[] matchings = tempalteMatching.ProcessImage(sourceClone, item, rectSize);
                            unsafe
                            {
                                BitmapData data = sourceClone.LockBits(
                                    new Rectangle(0, 0, sourceClone.Width, sourceClone.Height),
                                    ImageLockMode.ReadOnly, sourceClone.PixelFormat);

                                foreach (var match in matchings)
                                {
                                    //Highlight Matches
                                    if (match.Similarity >= this.similarityOffset && match.Similarity < 0.90f)
                                    {
                                        Drawing.Rectangle(data, match.Rectangle, Color.Fuchsia);
                                        similarity.Add(match.Similarity.ToString());
                                        int clickX = this.chefTable.X + match.Rectangle.X - 1;
                                        int clickY = this.chefTable.Y + match.Rectangle.Y - 1;
                                        cp    = new Point(clickX, clickY);
                                        click = cp;
                                    }
                                }
                                sourceClone.UnlockBits(data);
                            }    //end of unsafe teamplate maching
                        }        //end of if condition
                    }//end of blob loop
                }                //end of ingredient image loop
                filteredBitmap.UnlockBits(bitData);
            }//end of unsafe blob filter
            if (similarity.Count <= 0)
            {
                cp = new Point(-1, -1);
            }
            blobedImage   = filteredBitmap;
            findingsImage = sourceClone;
            click         = cp;
        }
Esempio n. 18
0
        void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;



            if (rdiobtnKirmizi.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);


                nesnebul(image1);
            }

            if (rdiobtnMavi.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center color and radius
                filter.CenterColor = new RGB(Color.FromArgb(30, 144, 255));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                nesnebul(image1);
            }
            if (rdiobtnYesil.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center color and radius
                filter.CenterColor = new RGB(Color.FromArgb(0, 215, 0));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                nesnebul(image1);
            }


            if (rdbtnElleBelirleme.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                nesnebul(image1);
            }
        }
Esempio n. 19
0
        private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            try
            {
                Bitmap video = (Bitmap)eventArgs.Frame.Clone();
                Bitmap tmp   = video.Clone() as Bitmap;
                //Create color filter

                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new AForge.Imaging.RGB(color.R, color.G, color.B);
                filter.Radius      = 90;
                filter.ApplyInPlace(tmp);

                BlobCounter blobcounter = new BlobCounter();
                blobcounter.MinHeight    = Convert.ToInt32(numericUpDown1.Value);
                blobcounter.MinWidth     = Convert.ToInt32(numericUpDown2.Value);
                blobcounter.FilterBlobs  = true;
                blobcounter.ObjectsOrder = ObjectsOrder.Size;
                //locate blobs
                blobcounter.ProcessImage(tmp);
                Rectangle[] rects  = blobcounter.GetObjectsRectangles();
                Blob[]      bBlobs = blobcounter.GetObjectsInformation();

                SimpleShapeChecker shapeChecker = new SimpleShapeChecker();
                //draw rectangle around the biggest blob
                Pen yellowPen = new Pen(Color.Red, 5);


                foreach (Rectangle recs in rects)
                {
                    if (rects.Length > 0)
                    {
                        Rectangle objectRect1 = recs;
                        Graphics  g           = Graphics.FromImage(video);

                        using (Pen pen = new Pen(Color.FromArgb(160, 255, 160), 5))
                        {
                            g.DrawRectangle(pen, objectRect1);
                            PointF drawPoin = new PointF(objectRect1.X, objectRect1.Y);

                            int objectX = objectRect1.X + objectRect1.Width / 2 - video.Width / 2;

                            int objectY = video.Height / 2 - (objectRect1.Y + objectRect1.Height / 2);

                            String Blobinformation = "X= " + objectX.ToString() + "\nY= " + objectY.ToString() + "\nSize=" + objectRect1.Size.ToString();

                            g.DrawString(Blobinformation, new Font("Arial", 16), new SolidBrush(Color.Blue), drawPoin);
                            if (objectY == 1)
                            {
                                // MessageBox.Show("BOOOOM!!!");
                                Console.WriteLine("BOOOOM!!!");
                                Console.WriteLine("X: {0} Y: {1}", objectX, objectY);
                                video.SetResolution(500, 200);
                                //   g.Dispose();
                                break;
                            }
                        }

                        g.Dispose();
                    }
                }

                //circle
                //for (int i = 0, n = bBlobs.Length; i < n; i++)
                //{
                //    List<IntPoint> edgePoints = blobcounter.GetBlobsEdgePoints(bBlobs[i]);
                //    Graphics g = Graphics.FromImage(video);
                //    AForge.Point center;
                //    float radius;

                //    // is circle ?
                //    if (shapeChecker.IsCircle(edgePoints, out center, out radius))
                //    {
                //        g.DrawEllipse(yellowPen,
                //            (float)(center.X - radius), (float)(center.Y - radius),
                //            (float)(radius * 2), (float)(radius * 2));
                //    }
                //}
                //
                //yellowPen.Dispose();
                pictureBox1.Image = video;
            }
            catch (Exception)
            {
                numericUpDown1.Value = 5;
                numericUpDown1.Value = 5;
                MessageBox.Show("Erorr!!");
            }
            //   pictureBox2.Image = grayImage;
        }
Esempio n. 20
0
        //kameradan alınan görüntünün işleme kısmı

        private void FinalFrame_newFrame(object sender, NewFrameEventArgs eventArgs)
        {
            video_1 = (Bitmap)eventArgs.Frame.Clone();
            video_2 = (Bitmap)eventArgs.Frame.Clone();



            Mirror filter2 = new Mirror(false, true);

            filter2.ApplyInPlace(video_1);

            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
            filter.Radius      = 100;
            filter.ApplyInPlace(video_1);
            BitmapData     objectsData = video_1.LockBits(new Rectangle(0, 0, video_1.Width, video_1.Height), ImageLockMode.ReadOnly, video_1.PixelFormat);
            Grayscale      grifiltresi = new Grayscale(0.2125, 0.7154, 0.0721); //Gri filtresi
            UnmanagedImage griresim    = grifiltresi.Apply(new UnmanagedImage(objectsData));

            video_1.UnlockBits(objectsData);
            BlobCounter blobcounter = new BlobCounter();  //birleşik pikselleri numaralandırma işlemi, nesne sayma

            blobcounter.MinWidth     = 18;                //sayılan nesnelerin minimum genişliği
            blobcounter.MinHeight    = 18;                //"" yüksekliği
            blobcounter.FilterBlobs  = true;              //şartlara uyanların işaretlenmesi
            blobcounter.ObjectsOrder = ObjectsOrder.Size; //boyutlarına göre sıralamaya sokma işlemi


            blobcounter.ProcessImage(griresim);                     //videodaki bloblar sayılıp işleniyor
            Rectangle[] rects = blobcounter.GetObjectsRectangles(); //blobcounter içerisindeki blobların verileri alınıyor
            Blob[]      blobs = blobcounter.GetObjectsInformation();
            pictureBox2.Image = video_2;

            foreach (Rectangle recs in rects)
            {
                Graphics g = Graphics.FromImage(video_1);
                if (rects.Length > 0)
                {
                    Rectangle objectRect = rects[0];
                    x = objectRect.X + (objectRect.Width / 2);
                    y = objectRect.Y + (objectRect.Height / 2);

                    if (x < 213 && y < 160)
                    {
                        serialPort1.Write("1");
                    }
                    if ((213 < x && x < 426) && y < 160)
                    {
                        serialPort1.Write("2");
                    }
                    if (426 < x && x < 640 && y < 160)
                    {
                        serialPort1.Write("3");
                    }
                    if ((x < 213 && (160 < y && y < 320)))
                    {
                        serialPort1.Write("4");
                    }
                    if ((213 < x && x < 426) && (160 < y && y < 320))
                    {
                        serialPort1.Write("5");
                    }
                    if ((426 < x && x < 639) && (160 < y && y < 320))
                    {
                        serialPort1.Write("6");
                    }
                    if (x < 213 && (320 < y && y < 480))
                    {
                        serialPort1.Write("7");
                    }
                    if ((213 < x && x < 426) && (320 < y && y < 480))
                    {
                        serialPort1.Write("8");
                    }
                    if ((426 < x && x < 639) && (320 < y && y < 480))
                    {
                        serialPort1.Write("9");
                    }


                    using (Pen pen = new Pen(Color.FromArgb(252, 3, 26), 2))
                    {
                        g.DrawRectangle(pen, objectRect);
                    }

                    g.DrawString(x.ToString() + "X" + y.ToString(), new Font("Arial", 12), Brushes.Red, new System.Drawing.Point(x, y));
                    g.Dispose();
                }
            }
            pictureBox1.Image = video_1;
        }
Esempio n. 21
0
        private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            imge1 = (Bitmap)eventArgs.Frame.Clone();
            Bitmap imge2 = (Bitmap)eventArgs.Frame.Clone();

            if (radioButton1.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(225, 0, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(imge2);
            }
            if (radioButton2.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();

                filter.CenterColor = new RGB(Color.FromArgb(0, 255, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(imge2);
            }
            if (radioButton3.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();

                filter.CenterColor = new RGB(Color.FromArgb(0, 0, 255));
                filter.Radius      = 100;
                filter.ApplyInPlace(imge2);
            }
            switch (mode)
            {
            case 2:
            {
                g = Graphics.FromImage(imge2);
                g.DrawString(sayac.ToString(), new Font("Arial", 100), new SolidBrush(Color.Black), new PointF(2, 2));
                g.Dispose();
            }
            break;

            case 1:
            {
                BlobCounter blob = new BlobCounter();
                blob.MinHeight    = 15;
                blob.MinWidth     = 15;
                blob.ObjectsOrder = ObjectsOrder.Size;
                blob.ProcessImage(imge2);
                Rectangle[] rects = blob.GetObjectsRectangles();
                if (rects.Length > 0)
                {
                    Rectangle obje = rects[0];
                    Graphics  g    = Graphics.FromImage(imge2);
                    using (Pen pen = new Pen(Color.Black, 3))
                    {
                        g.DrawRectangle(pen, obje);
                    }
                    X = obje.X;
                    Y = obje.Y;

                    g = Graphics.FromImage(imge2);

                    string alan = "";

                    if (X >= 0 && 210 > X && Y >= 0 && Y < 160)
                    {
                        alan = "1.Bölge";
                        serialPort1.Write("1");
                    }
                    else if (X >= 210 && X < 420 && Y >= 0 && Y < 160)
                    {
                        alan = "2.Bölge";
                        serialPort1.Write("2");
                    }
                    else if (X >= 420 && X < 640 && Y >= 0 && Y < 160)
                    {
                        alan = "3.Bölge";
                        serialPort1.Write("3");
                    }

                    else if (X >= 0 && X < 210 && Y >= 160 && 320 >= Y)
                    {
                        alan = "4.Bölge";

                        serialPort1.Write("4");
                    }
                    else if (X >= 210 && X < 420 && Y >= 160 && 320 >= Y)
                    {
                        alan = "5.Bölge";

                        serialPort1.Write("5");
                    }
                    else if (X >= 420 && 640 >= X && Y >= 160 && 320 >= Y)
                    {
                        alan = "6.Bölge";

                        serialPort1.Write("6");
                    }
                    else if (X >= 0 && 210 >= X && Y >= 320 && 480 >= Y)
                    {
                        alan = "7.Bölge";

                        serialPort1.Write("7");
                    }
                    else if (X >= 210 && 420 >= X && Y >= 320 && 480 >= Y)
                    {
                        alan = "8.Bölge";

                        serialPort1.Write("8");
                    }
                    else if (X >= 420 && 640 >= X && Y >= 320 && 480 >= Y)
                    {
                        alan = "9.Bölge";

                        serialPort1.Write("9");
                    }
                    g.DrawString(X.ToString() + "X" + Y.ToString() + alan, new Font("Arial", 12), Brushes.Red, new System.Drawing.Point(1, 1));
                    g.Dispose();
                }
                pictureBox2.Image = imge2;
            }
            break;
            }

            pictureBox1.Image = imge1;
        }
Esempio n. 22
0
        private string RecognizeCaptcha(Image img, int varWidth, int varHeight, int varCaptchaLength)
        {
            Bitmap imagem = new Bitmap(img);

            imagem = imagem.Clone(new Rectangle(0, 0, varWidth, varHeight), System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            Invert         inverter = new Invert();
            ColorFiltering cor      = new ColorFiltering();

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

            Opening        open = new Opening();
            BlobsFiltering bc   = new BlobsFiltering();

            bc.MinHeight = 10;
            AForge.Imaging.Filters.BilateralSmoothing aa = new BilateralSmoothing();

            ////AForge.Imaging.Filters.Grayscale filter1 =
            ////new AForge.Imaging.Filters.Grayscale(1, 1, 1);
            ////-Working//FiltersSequence seq = new FiltersSequence(inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter, filter1, aa);
            ////WorkingPureWhiteAndRED--//FiltersSequence seq = new FiltersSequence(inverter, open, inverter, bc, inverter, open, cc, cor, bc, inverter, aa);

            FiltersSequence seq = new FiltersSequence(inverter, open, cor, bc, aa, inverter);

            Bitmap immb = seq.Apply(imagem);

            EuclideanColorFiltering filter = new EuclideanColorFiltering();

            filter.CenterColor = new AForge.Imaging.RGB(Color.Red);  //Pure White
            filter.Radius      = 200;                                //Increase this to allow off-whites
            filter.FillColor   = new AForge.Imaging.RGB(Color.Blue); //Replacement Colour
            filter.FillOutside = false;
            filter.ApplyInPlace(immb);
            pictureBox.Image = immb;

            // Make Image Clear Black and Line Blue.
            for (int i = 0; i < pictureBox.Image.Height; i++)
            {
                for (int j = 0; j < pictureBox.Image.Width; j++)
                {
                    //Get the color at each pixel
                    Color now_color = immb.GetPixel(j, i);
                    if (now_color.Name == "ff0000ff")
                    {
                        immb.SetPixel(j, i, Color.Blue);
                    }
                    else if (lstBlackColorCodeFrame.Contains(now_color.Name))
                    {
                        immb.SetPixel(j, i, Color.Black);
                    }
                    else if (now_color.Name == "ffffffff")
                    {
                        immb.SetPixel(j, i, Color.White);
                    }
                    else
                    {
                        immb.SetPixel(j, i, Color.Red);
                    }
                }
            }

            // Remove Blue Line From Image and Replace With Transparent.
            for (int i = 0; i < pictureBox.Image.Height; i++)
            {
                for (int j = 0; j < pictureBox.Image.Width; j++)
                {
                    //Get the color at each pixel
                    Color now_color = immb.GetPixel(j, i);

                    //Compare Pixel's Color ARGB property with the picked color's ARGB property
                    if (now_color.Name == "ff0000ff")
                    {
                        if (i != 0)
                        {
                            bool varChangeColor = false;
                            for (int k = 1; k <= 5; k++)
                            {
                                if ((i - k) > 0)
                                {
                                    Color iRefValue = immb.GetPixel(j, i - k);
                                    if (lstBlackColorCodeFrame.Contains(iRefValue.Name) || iRefValue == Color.Red)
                                    {
                                        varChangeColor = true;
                                        break;
                                    }
                                }
                            }
                            if (!varChangeColor)
                            {
                                for (int k = 1; k <= 5; k++)
                                {
                                    if ((i + k) < pictureBox.Image.Height)
                                    {
                                        Color iRefValue = immb.GetPixel(j, i + k);
                                        if (lstBlackColorCodeFrame.Contains(iRefValue.Name) || iRefValue == Color.Red)
                                        {
                                            varChangeColor = true;
                                            break;
                                        }
                                    }
                                }
                            }

                            if (varChangeColor)
                            {
                                immb.SetPixel(j, i, Color.Black);
                            }
                            else
                            {
                                // Commented To Make Transperent.
                                //immb.SetPixel(j, i, Color.Transparent);
                            }
                        }
                    }
                }
            }

            ////EuclideanColorFiltering filt = new EuclideanColorFiltering();
            ////filt.CenterColor = new AForge.Imaging.RGB(Color.Blue); //Pure White
            ////filt.Radius = 200; //Increase this to allow off-whites
            ////filt.FillColor = new AForge.Imaging.RGB(Color.Transparent); //Replacement Colour
            ////filt.FillOutside = false;
            ////filt.ApplyInPlace(immb);

            pictureBox.Image = immb;

            string reconhecido = OCR(immb, varCaptchaLength);

            return(reconhecido);
        }
Esempio n. 23
0
        void reader_IRFrameArrived(object sender, MultiSourceFrameArrivedEventArgs e)
        {
            if (mode == 1)
            {
                return;
            }

            var reference = e.FrameReference.AcquireFrame();

            using (InfraredFrame frame = reference.InfraredFrameReference.AcquireFrame())
            {
                if (frame != null)
                {
                    warten.Visible = false;

                    int      width     = frame.FrameDescription.Width;
                    int      height    = frame.FrameDescription.Height;
                    ushort[] data      = new ushort[width * height];
                    byte[]   pixelData = new byte[width * height * 4];
                    possibleTracker = new string[width * height * 4];
                    int xcoord = 0;
                    int ycoord = 0;

                    frame.CopyFrameDataToArray(data);
                    int    akt    = 0;
                    Bitmap bitmap = new Bitmap(width, height, PixelFormat.Format32bppRgb);
                    for (int infraredIndex = 0; infraredIndex < data.Length; infraredIndex++)
                    {
                        ushort ir        = data[infraredIndex];
                        byte   intensity = (byte)(ir >> 8);

                        pixelData[infraredIndex * 4]     = intensity; // Blue
                        pixelData[infraredIndex * 4 + 1] = intensity; // Green
                        pixelData[infraredIndex * 4 + 2] = intensity; // Red
                        pixelData[infraredIndex * 4 + 3] = 255;       //Brightness
                    }
                    var bitmapdata = bitmap.LockBits(
                        new Rectangle(0, 0, width, height),
                        ImageLockMode.WriteOnly,
                        bitmap.PixelFormat
                        );
                    IntPtr ptr = bitmapdata.Scan0;

                    Marshal.Copy(pixelData, 0, ptr, pixelData.Length);
                    bitmap.UnlockBits(bitmapdata);
                    bitmap.RotateFlip(RotateFlipType.Rotate180FlipY);

                    counter = new BlobCounter();
                    EuclideanColorFiltering filter = new EuclideanColorFiltering();
                    //ResizeNearestNeighbor filter2 = new ResizeNearestNeighbor(1920, 1080);
                    filter.CenterColor = new RGB(Color.White);   //Pure White
                    filter.Radius      = (short)trackBar1.Value; //Increase this to allow off-whites
                    filter.FillOutside = false;
                    filter.FillColor   = new RGB(Color.White);   //Replacement Color

                    Bitmap bmp = filter.Apply(bitmap);

                    //filter2.Apply(bmp);
                    //filter3.Apply(bmp);

                    //filter.CenterColor = new RGB(0, 0, 0);
                    //filter.Radius = 100;
                    //filter.ApplyInPlace(bmp);
                    counter.MinWidth  = 100;
                    counter.MinHeight = 100;
                    //counter.FilterBlobs = true;
                    counter.BackgroundThreshold = Color.Gray;
                    counter.ProcessImage(bmp);
                    Blob[]             blobs        = counter.GetObjectsInformation();
                    Pen                redPen       = new Pen(Color.Red, 20);//Kreisradius
                    Graphics           g            = Graphics.FromImage(bmp);
                    SimpleShapeChecker shapeChecker = new SimpleShapeChecker();

                    for (int i = 0; i < blobs.Length; i++)
                    {
                        List <IntPoint> edgePoints = counter.GetBlobsEdgePoints(blobs[i]);

                        AForge.Point center;
                        float        radius;

                        if (shapeChecker.IsCircle(edgePoints, out center, out radius))
                        {
                            g.DrawEllipse(redPen,
                                          (int)(center.X - radius),
                                          (int)(center.Y - radius),
                                          (int)(radius * 2),
                                          (int)(radius * 2));
                            if (kreise == 1)
                            {
                                ecken1_x = (int)center.X;
                                ecken1_y = (int)center.Y;
                            }
                            if (kreise == 2)
                            {
                                ecken2_x = (int)center.X;
                                ecken2_y = (int)center.Y;
                            }
                            if (kreise == 3)
                            {
                                ecken3_x = (int)center.X;
                                ecken3_y = (int)center.Y;
                            }
                            if (kreise == 4)
                            {
                                ecken4_x = (int)center.X;
                                ecken4_y = (int)center.Y;
                                kreise   = 0;
                            }
                            kreise++;
                        }

                        //anzeige.Text = center.X.ToString() + " " + center.Y.ToString();
                        //anzeige.Text = ecken_x[z].ToString() + " " + ecken_x[z].ToString();
                        anzeige.Text = "Punkt 1: " + ecken1_x + " " + ecken1_y + "\n" + "Punkt 2: " + ecken2_x + " " + ecken2_y + "\n" + "Punkt 3: " + ecken3_x + " " + ecken3_y + "\n" + "Punkt 4: " + ecken4_x + " " + ecken4_y;
                    }
                    pictureBox1.Image = bmp;
                }
                else
                {
                    warten.Visible = true;
                }
            }
        }
Esempio n. 24
0
        private void FinalFrame_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            imge1 = (Bitmap)eventArgs.Frame.Clone();
            Bitmap imge2 = (Bitmap)eventArgs.Frame.Clone();

            if (radioButton1.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                filter.CenterColor = new RGB(Color.FromArgb(225, 0, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(imge2);
            }
            if (radioButton2.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();

                filter.CenterColor = new RGB(Color.FromArgb(0, 255, 0));
                filter.Radius      = 100;
                filter.ApplyInPlace(imge2);
            }
            if (radioButton3.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();

                filter.CenterColor = new RGB(Color.FromArgb(0, 0, 255));
                filter.Radius      = 100;
                filter.ApplyInPlace(imge2);
            }
            switch (mode)
            {
            case 2:
            {
                g = Graphics.FromImage(imge2);
                g.DrawString(sayac.ToString(), new Font("Arial", 100), new SolidBrush(Color.Black), new PointF(2, 2));
                g.Dispose();
            }
            break;

            case 1:
            {
                BlobCounter blob = new BlobCounter();
                blob.MinHeight    = 15;
                blob.MinWidth     = 15;
                blob.ObjectsOrder = ObjectsOrder.Size;
                blob.ProcessImage(imge2);
                Rectangle[] rects = blob.GetObjectsRectangles();
                if (rects.Length > 0)
                {
                    Rectangle obje = rects[0];
                    Graphics  g    = Graphics.FromImage(imge2);
                    using (Pen pen = new Pen(Color.Black, 3))
                    {
                        g.DrawRectangle(pen, obje);
                    }
                    X = obje.X;
                    Y = obje.Y;

                    g = Graphics.FromImage(imge2);

                    if (X <= 320)


                    {
                        serialPort1.Write("l");
                    }
                    if (X > 320)
                    {
                        serialPort1.Write("r");
                    }
                    g.DrawString(X.ToString() + "X" + Y.ToString() + "Y", new Font("Arial", 12), Brushes.Red, new System.Drawing.Point(1, 1));
                    g.Dispose();
                }
                pictureBox2.Image = imge2;
            }
            break;
            }

            pictureBox1.Image = imge1;
        }
Esempio n. 25
0
        void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap goruntu  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap goruntu1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = goruntu;



            if (rdiobtnKirmizi.Checked)
            {
                // Filtre Oluşturma
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // orta kolonu ve yarıçapı ayarlama
                filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0));
                filter.Radius      = 100;
                // Filtre Uygulama
                filter.ApplyInPlace(goruntu1);


                nesnebul(goruntu1);
            }

            if (rdiobtnMavi.Checked)
            {
                // Filtre Oluşturma
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // orta kolonu ve yarıçapı ayarlama
                filter.CenterColor = new RGB(Color.FromArgb(30, 144, 255));
                filter.Radius      = 100;
                // Filtre Uygulama
                filter.ApplyInPlace(goruntu1);

                nesnebul(goruntu1);
            }
            if (rdiobtnYesil.Checked)
            {
                // Filtre Oluşturma
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // orta kolonu ve yarıçapı ayarlama
                filter.CenterColor = new RGB(Color.FromArgb(0, 215, 0));
                filter.Radius      = 100;
                // Filtre Uygulama
                filter.ApplyInPlace(goruntu1);

                nesnebul(goruntu1);
            }


            if (rdbtnElleBelirleme.Checked)
            {
                // Filtre Oluşturma
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // orta kolonu ve yarıçapı ayarlama
                filter.CenterColor = new RGB(Color.FromArgb(R, G, B));
                filter.Radius      = 100;
                // Filtre Uygulama
                filter.ApplyInPlace(goruntu1);

                nesnebul(goruntu1);
            }
        }
Esempio n. 26
0
        void CıkısVideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            video = (Bitmap)eventArgs.Frame.Clone();  //aldığımız görüntüyü pictureBox1 a atarak görüntüyü alıyoruz.
            Bitmap video2 = (Bitmap)eventArgs.Frame.Clone();

            filter.ApplyInPlace(video2);

            switch (mode)
            {
            case 2:
            {
                g = Graphics.FromImage(video2);        //Değişiklik için grafik nesnesi oluşturduk
                g.DrawString(sayac.ToString(), new Font("Arial", 100), new SolidBrush(Color.Black), new PointF(2, 2));
                g.Dispose();
            }
            break;

            case 1:
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();

                filter.CenterColor = new RGB(215, 30, 30);
                filter.Radius      = 100;
                filter.ApplyInPlace(video2);

                //blob filtre
                BlobCounter blob = new BlobCounter();
                blob.MinHeight    = 200;
                blob.MinWidth     = 200;
                blob.ObjectsOrder = ObjectsOrder.Size;
                blob.ProcessImage(video2);
                Rectangle[] rects = blob.GetObjectsRectangles();
                if (rects.Length > 0)
                {
                    Rectangle obje = rects[0];
                    Graphics  g    = Graphics.FromImage(video2);
                    using (Pen pen = new Pen(Color.White, 3))
                    {
                        g.DrawRectangle(pen, obje);
                    }
                    yatayX = obje.X;
                    dikeyY = obje.Y;

                    g = Graphics.FromImage(video2);
                    // 1
                    if (yatayX >= 0 && 200 > yatayX && dikeyY >= 0 && dikeyY < 100)
                    {
                        serialPort1.Write("A");
                    }
                    // 2
                    else if (yatayX >= 200 && yatayX < 400 && dikeyY >= 0 && dikeyY < 100)
                    {
                        serialPort1.Write("B");
                    }
                    // 3
                    else if (yatayX >= 400 && yatayX < 600 && dikeyY >= 0 && dikeyY < 100)
                    {
                        serialPort1.Write("C");
                    }
                    // 4
                    else if (yatayX >= 0 && yatayX < 200 && dikeyY >= 100 && 200 >= dikeyY)
                    {
                        serialPort1.Write("D");
                    }
                    // 5
                    else if (yatayX >= 200 && yatayX < 400 && dikeyY >= 100 && 200 >= dikeyY)
                    {
                        serialPort1.Write("E");
                    }
                    // 6
                    else if (yatayX >= 400 && 600 >= yatayX && dikeyY >= 100 && 200 >= dikeyY)
                    {
                        serialPort1.Write("F");
                    }
                    // 7
                    else if (yatayX >= 0 && 200 >= yatayX && dikeyY >= 200 && 300 >= dikeyY)
                    {
                        serialPort1.Write("G");
                    }
                    // 8
                    else if (yatayX >= 200 && 400 >= yatayX && dikeyY >= 200 && 300 >= dikeyY)
                    {
                        serialPort1.Write("H");
                    }
                    // 9
                    else if (yatayX >= 400 && 600 >= yatayX && dikeyY >= 200 && 300 >= dikeyY)
                    {
                        serialPort1.Write("K");
                    }

                    g.Dispose();
                }
                // GO HOME
                else
                {
                    serialPort1.Write("X");
                }

                pictureBox2.Image = video2;
            }
            break;

            case 3:
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering();

                filter.CenterColor = new RGB(215, 30, 30);
                filter.Radius      = 100;
                filter.ApplyInPlace(video2);

                //blob filtre
                BlobCounter blob = new BlobCounter();
                blob.MinHeight    = 200;
                blob.MinWidth     = 200;
                blob.ObjectsOrder = ObjectsOrder.Size;
                blob.ProcessImage(video2);
                Rectangle[] rects = blob.GetObjectsRectangles();
                if (rects.Length > 0)
                {
                    Rectangle obje = rects[0];
                    Graphics  g    = Graphics.FromImage(video2);
                    using (Pen pen = new Pen(Color.White, 3))
                    {
                        g.DrawRectangle(pen, obje);
                    }
                    yatayX = obje.X;
                    dikeyY = obje.Y;

                    g = Graphics.FromImage(video2);
                    if (yatayX >= 0 && 200 > yatayX && dikeyY >= 0 && dikeyY < 100)
                    {
                        serialPort1.Write("M");
                    }
                    else if (yatayX >= 200 && yatayX < 400 && dikeyY >= 0 && dikeyY < 100)
                    {
                        serialPort1.Write("N");
                    }

                    else if (yatayX >= 400 && yatayX < 600 && dikeyY >= 0 && dikeyY < 100)
                    {
                        serialPort1.Write("S");
                    }

                    else if (yatayX >= 0 && yatayX < 200 && dikeyY >= 100 && 200 >= dikeyY)
                    {
                        serialPort1.Write("L");
                    }
                    else if (yatayX >= 200 && yatayX < 400 && dikeyY >= 100 && 200 >= dikeyY)
                    {
                        serialPort1.Write("R");
                    }
                    else if (yatayX >= 400 && 600 >= yatayX && dikeyY >= 100 && 200 >= dikeyY)
                    {
                        serialPort1.Write("P");
                    }
                    else if (yatayX >= 0 && 200 >= yatayX && dikeyY >= 200 && 300 >= dikeyY)
                    {
                        serialPort1.Write("T");
                    }
                    else if (yatayX >= 200 && 400 >= yatayX && dikeyY >= 200 && 300 >= dikeyY)
                    {
                        serialPort1.Write("Y");
                    }
                    else if (yatayX >= 400 && 600 >= yatayX && dikeyY >= 200 && 300 >= dikeyY)
                    {
                        serialPort1.Write("Z");
                    }

                    g.Dispose();
                }
                pictureBox2.Image = video2;
            }
            break;
            }

            pictureBox1.Image = video;
        }
 public EuclidColorFilter(Color color, short radius)
 {
     Color  = color;
     Radius = radius;
     filter = new EuclideanColorFiltering(new RGB(Color), Radius);
 }
Esempio n. 28
0
        void Finalvideo_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;
            if (radioButton1.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering(); //filtreyi oluşturuyoruz
                filter.CenterColor = new RGB(Color.FromArgb(255, 0, 0));        //merkez renkgi belirliyoruz
                filter.Radius      = 120;                                       //filtrenin uygulayacagı yarıçap uzunlugu
                filter.ApplyInPlace(image1);                                    //filtreyi resme uyguluyoruz
                BlobCounter bc = new BlobCounter();
                bc.ProcessImage(image1);
                Rectangle[] rects = bc.GetObjectsRectangles();
                foreach (Rectangle rect in rects)
                {
                    cisimxkordinati = rect.X;
                    cisimykordinati = rect.Y;
                }
                cisimrengi        = Color.FromArgb(255, 0, 0);
                bolgeliresim      = image1;
                pictureBox2.Image = image1;
                int    w           = pictureBox2.Image.Size.Width;
                int    h           = pictureBox2.Image.Size.Height;
                double satırbulucu = (h / 3);
                double sutunbulucu = (w / 3);

                serialPort1.Write("0");
                bolge = 0;
                if (cisimxkordinati <= sutunbulucu && cisimykordinati <= satırbulucu)
                {
                    bolge = 1;
                    serialPort1.Write("1");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati <= satırbulucu)
                {
                    bolge = 2;
                    serialPort1.Write("2");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati <= satırbulucu)
                {
                    bolge = 3;
                    serialPort1.Write("3");
                }
                else if (cisimxkordinati <= sutunbulucu && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 4;
                    serialPort1.Write("4");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 5;
                    serialPort1.Write("5");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 6;
                    serialPort1.Write("6");
                }
                else if (cisimxkordinati <= sutunbulucu && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 7;
                    serialPort1.Write("7");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 8;
                    serialPort1.Write("8");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 9;
                    serialPort1.Write("9");
                }
                else
                {
                    bolge = 0;
                    serialPort1.Write("0");
                }
            }
            if (radioButton2.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering(); //filtreyi oluşturuyoruz
                filter.CenterColor = new RGB(Color.FromArgb(0, 255, 0));        //merkez renkgi belirliyoruz
                filter.Radius      = 100;                                       //filtrenin uygulayacagı yarıçap uzunlugu
                filter.ApplyInPlace(image1);                                    //filtreyi resme uyguluyoruz
                BlobCounter bc = new BlobCounter();
                bc.ProcessImage(image1);
                Rectangle[] rects = bc.GetObjectsRectangles();
                foreach (Rectangle rect in rects)
                {
                    cisimxkordinati = rect.X;
                    cisimykordinati = rect.Y;
                }
                cisimrengi        = Color.FromArgb(0, 255, 0);
                bolgeliresim      = image1;
                pictureBox2.Image = image1;
                int    w           = pictureBox2.Image.Size.Width;
                int    h           = pictureBox2.Image.Size.Height;
                double satırbulucu = (h / 3);
                double sutunbulucu = (w / 3);

                serialPort1.Write("0");
                bolge = 0;
                if (cisimxkordinati <= sutunbulucu && cisimykordinati <= satırbulucu)
                {
                    bolge = 1;
                    serialPort1.Write("1");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati <= satırbulucu)
                {
                    bolge = 2;
                    serialPort1.Write("2");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati <= satırbulucu)
                {
                    bolge = 3;
                    serialPort1.Write("3");
                }
                else if (cisimxkordinati <= sutunbulucu && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 4;
                    serialPort1.Write("4");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 5;
                    serialPort1.Write("5");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 6;
                    serialPort1.Write("6");
                }
                else if (cisimxkordinati <= sutunbulucu && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 7;
                    serialPort1.Write("7");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 8;
                    serialPort1.Write("8");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 9;
                    serialPort1.Write("9");
                }
                else
                {
                    bolge = 0;
                    serialPort1.Write("0");
                }
            }
            if (radioButton3.Checked)
            {
                EuclideanColorFiltering filter = new EuclideanColorFiltering(); //filtreyi oluşturuyoruz
                filter.CenterColor = new RGB(Color.FromArgb(0, 0, 255));        //merkez renkgi belirliyoruz
                filter.Radius      = 120;                                       //filtrenin uygulayacagı yarıçap uzunlugu
                filter.ApplyInPlace(image1);                                    //filtreyi resme uyguluyoruz
                BlobCounter bc = new BlobCounter();
                bc.ProcessImage(image1);
                Rectangle[] rects = bc.GetObjectsRectangles();
                foreach (Rectangle rect in rects)
                {
                    cisimxkordinati = rect.X;
                    cisimykordinati = rect.Y;
                }
                cisimrengi        = Color.FromArgb(0, 0, 255);
                bolgeliresim      = image1;
                pictureBox2.Image = image1;
                int    w           = pictureBox2.Image.Size.Width;
                int    h           = pictureBox2.Image.Size.Height;
                double satırbulucu = (h / 3);
                double sutunbulucu = (w / 3);

                serialPort1.Write("0");
                bolge = 0;
                if (cisimxkordinati <= sutunbulucu && cisimykordinati <= satırbulucu)
                {
                    bolge = 1;
                    serialPort1.Write("1");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati <= satırbulucu)
                {
                    bolge = 2;
                    serialPort1.Write("2");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati <= satırbulucu)
                {
                    bolge = 3;
                    serialPort1.Write("3");
                }
                else if (cisimxkordinati <= sutunbulucu && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 4;
                    serialPort1.Write("4");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 5;
                    serialPort1.Write("5");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati > satırbulucu && cisimykordinati <= (2 * satırbulucu))
                {
                    bolge = 6;
                    serialPort1.Write("6");
                }
                else if (cisimxkordinati <= sutunbulucu && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 7;
                    serialPort1.Write("7");
                }
                else if (cisimxkordinati > sutunbulucu && cisimxkordinati <= (2 * sutunbulucu) && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 8;
                    serialPort1.Write("8");
                }
                else if (cisimxkordinati > (2 * sutunbulucu) && cisimykordinati > (2 * satırbulucu))
                {
                    bolge = 9;
                    serialPort1.Write("9");
                }
                else
                {
                    bolge = 0;
                    serialPort1.Write("0");
                }
            }
        }
        /* FinalFrame_NewFrame is an event Handler which gets fired every time the webcam captures a fresh image.
         * This allows image data to be intercepted and different image processing techniques can be applied.*/
        private void VideoSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
        {
            Bitmap image  = (Bitmap)eventArgs.Frame.Clone();
            Bitmap image1 = (Bitmap)eventArgs.Frame.Clone();

            pictureBox1.Image = image;


            //pictureBox1.SizeMode = PictureBoxSizeMode.StretchImage;
            // pictureBox1.Image = image;
            /*  Insert break-point here to view width and height of video in the ‘Locals’ Window. */

            if (radiobtnRed.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(215, 0, 0));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                ProcessIMG(image1);
            }



            if (radiobtnBlue.Checked)
            {
                // create filter
                EuclideanColorFiltering filter = new EuclideanColorFiltering();
                // set center colol and radius
                filter.CenterColor = new RGB(Color.FromArgb(30, 144, 255));
                filter.Radius      = 100;
                // apply the filter
                filter.ApplyInPlace(image1);

                ProcessIMG(image1);

                /*
                 * if (objectX > 0)
                 * {
                 *  // as the object is to the right of the screen.
                 *  sp.Write("6");
                 *  Thread.Sleep(100);
                 *  //textBox.Text += ("Robot Drive Right " + Environment.NewLine);
                 *
                 * }
                 * if (objectX < 0)
                 * {
                 *  // as the object is to the left of the screen.
                 *  sp.Write("4");
                 *  Thread.Sleep(100);
                 *  //textBox.Text += ("robot drive Left " + Environment.NewLine);
                 * }
                 *
                 * if (objectX == 0)
                 * {
                 *  // as the object is in the centre of the screen.
                 *  sp.Write("8");
                 *  Thread.Sleep(100);
                 *  //textBox.Text += ("Forward " + Environment.NewLine);
                 * }
                 */
            }
        }
Esempio n. 30
0
        public void test_creditcardcover()
        {
            try
            {
                const string FILE1 = @"C:\IMAGES\PB\PB742030.jpg";
                const string FILE2 = @"C:\IMAGES\PB\PB742030_done2.jpg";
                const string FILE3 = @"C:\IMAGES\PB\PB742030_done3.jpg";
                const string FILE4 = @"C:\IMAGES\PB\PB742030_done4.jpg";

                //using (var image = (Bitmap)Bitmap.FromFile(FILE1))
                //{
                //    //Invert filter = new Invert();
                //    //filter.ApplyInPlace(image);
                //    using (var img = image.ConvertToBitonal())
                //    {
                //        img.Save(FILE2, ImageFormat.Jpeg);
                //    }
                //}

                using (var image = (Bitmap)Bitmap.FromFile(FILE1))
                {
                    EuclideanColorFiltering filter = new EuclideanColorFiltering();
                    filter.CenterColor = new AForge.Imaging.RGB(Color.BlueViolet); //Pure White
                    filter.Radius      = 0;                                        //Increase this to allow off-whites
                    filter.FillColor   = new AForge.Imaging.RGB(Color.Red);        //Replacement Colour
                    filter.ApplyInPlace(image);
                }

                return;

                //To gray scale
                using (var image = (Bitmap)Bitmap.FromFile(FILE1))
                {
                    FiltersSequence seq = new FiltersSequence();
                    seq.Add(Grayscale.CommonAlgorithms.BT709); //First add  GrayScaling filter
                    seq.Add(new OtsuThreshold());              //Then add binarization(thresholding) filter
                    var img = seq.Apply(image);                // Apply filters on source image
                    img.Save(FILE2, ImageFormat.Jpeg);
                    return;
                }

                using (var image = (Bitmap)Bitmap.FromFile(FILE1))
                {
                    Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721);
                    // apply the filter
                    using (Bitmap grayImage = filter.Apply(image))
                    {
                        VerticalIntensityStatistics vis = new VerticalIntensityStatistics(grayImage);
                        // get gray histogram (for grayscale image)
                        var histogram = vis.Gray;
                        // output some histogram's information
                        System.Diagnostics.Debug.WriteLine("Mean = " + histogram.Mean);
                        System.Diagnostics.Debug.WriteLine("Min = " + histogram.Min);
                        System.Diagnostics.Debug.WriteLine("Max = " + histogram.Max);
                    }
                }



                using (var image = (Bitmap)Bitmap.FromFile(FILE2))
                {
                    VerticalIntensityStatistics vis = new VerticalIntensityStatistics(image);
                    // get gray histogram (for grayscale image)
                    var histogram = vis.Gray;
                    // output some histogram's information
                    System.Diagnostics.Debug.WriteLine("Mean = " + histogram.Mean);
                    System.Diagnostics.Debug.WriteLine("Min = " + histogram.Min);
                    System.Diagnostics.Debug.WriteLine("Max = " + histogram.Max);
                }
                //using (var image = (Bitmap)Bitmap.FromFile(FILE2))
                //{
                //    //EuclideanColorFiltering filter = new EuclideanColorFiltering();
                //    //// set center colol and radius
                //    //filter.CenterColor = new RGB(82, 26, 39);
                //    //filter.Radius = 100;
                //    //// apply the filter
                //    //filter.ApplyInPlace(image);

                //    Median filter2 = new Median();
                //    // apply the filter
                //    filter2.ApplyInPlace(image);
                //    image.Save(FILE3, ImageFormat.Jpeg);
                //}

                using (var image = (Bitmap)Bitmap.FromFile(FILE2))
                {
                    //Median filter2 = new Median();
                    //// apply the filter
                    //filter2.ApplyInPlace(image);

                    //ConservativeSmoothing filter = new ConservativeSmoothing();
                    //filter.ApplyInPlace(image);

                    //BilateralSmoothing filter = new BilateralSmoothing();
                    //filter.KernelSize = 25;
                    //filter.SpatialFactor = 10;
                    //filter.ColorFactor = 60;
                    //filter.ColorPower = 0.5;
                    //// apply the filter
                    //filter.ApplyInPlace(image);

                    ///////////////////////////////////////////

                    // create filter
                    BlobsFiltering filter3 = new BlobsFiltering();
                    // configure filter
                    //filter.CoupledSizeFiltering = true;
                    filter3.MinWidth  = 20;
                    filter3.MinHeight = 20;
                    filter3.MaxWidth  = 150;
                    filter3.MaxHeight = 150;
                    filter3.ApplyInPlace(image); //apply the filter
                    ////////////////////////////


                    //ExtractBiggestBlob filter = new ExtractBiggestBlob();
                    //// apply the filter
                    //Bitmap biggestBlobsImage = filter.Apply(image);
                    image.Save(FILE3, ImageFormat.Jpeg);
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(ex);
            }
        }