I am making an application that detects the faces of the Rubik's Cube using a webcam. I can apply filters to the blobs, but do not know how to get the color of each blob. I have searched everywhere without success. I use C# Visual Studio 2015 with Aforge.NET
//Create color filter HSLFiltering HslFilter = new HSLFiltering(); //configre the filter HslFilter.Hue = new IntRange(minMat, maxMat); HslFilter.Saturation = new Range(minSat, maxSat); HslFilter.Luminance = new Range(minLum, maxLum); //apply color filter to the image HslFilter.ApplyInPlace(video2); Grayscale grayFilter = Grayscale.CommonAlgorithms.BT709; Bitmap grayImage = grayFilter.Apply(video2); //display Image BlobCounter blobcounter = new BlobCounter(); BlobsFiltering filtroTamaño = new BlobsFiltering(); //ConnectedComponentsLabeling filtroColor = new ConnectedComponentsLabeling(); CannyEdgeDetector filtroEsquinas = new CannyEdgeDetector(); BlobCounterBase bc = new BlobCounter(); blobcounter.FilterBlobs = true; blobcounter.MinHeight = 30; blobcounter.MinWidth = 30; blobcounter.MaxHeight = 70; blobcounter.MaxHeight = 70; //filtroTamaño.MinHeight = 30; //filtroTamaño.MinWidth = 30; //filtroTamaño.MaxHeight = 70; //filtroTamaño.MaxWidth = 70; blobcounter.ObjectsOrder = ObjectsOrder.YX; //locate blobs //filtroTamaño.ApplyInPlace(grayImage); blobcounter.ProcessImage(grayImage); //filtroColor.Apply(grayImage); //filtroEsquinas.ApplyInPlace(grayImage); BitmapData objectsData = video.LockBits(new Rectangle(0, 0, video.Width, video.Height), ImageLockMode.ReadOnly, video.PixelFormat); video.UnlockBits(objectsData); Rectangle[] rects = blobcounter.GetObjectsRectangles(); for (int i = 0; rects.Length > i; i++) { Rectangle objectRect1 = rects[i]; Graphics g = Graphics.FromImage(video); //Graphics g = video.CreateGraphics() using (Pen pen = new Pen(Color.Red, 3)) { if (checkSeguimiento.Checked) { 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", 12), new SolidBrush(Color.Blue), drawPoin); g.DrawString((i + 1).ToString(), new Font("Arial", 12), Brushes.Red, objectRect1); } } g.Dispose(); } pictureBox1.Image = video; pictureBox2.Image = grayImage;
var
This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)