1
我正在製作一個應用程序,使用網絡攝像頭檢測魔方的面部。我可以將過濾器應用於blob,但不知道如何獲取每個blob的顏色。提取顏色Aforge.NET rubik的立方體
我到處搜索沒有成功。我使用Visual Studio 2015年Aforge.NET
void Finalvideo_newframe(object sender, NewFrameEventArgs eventArgs)
{
Bitmap video = (Bitmap)eventArgs.Frame.Clone();
Bitmap video2 = (Bitmap)eventArgs.Frame.Clone();
//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;
歡迎堆棧溢出像素的顏色!您應該發佈您遇到問題的[mcve](http://stackoverflow.com/help/mcve),否則我們無法爲您提供幫助。 – yuyoyuppe