Я пытаюсь использовать AForge.NET для обнаружения толстой белой линии на изображении.
Это похоже на трубу, которую я получаю, и это мой желаемый результат после применения фильтра Threshold.
Я знаю, как определять формы, и я уже делаю это, но это не совпадает ни с одной формой, так как не имеет краев и не является кругом.
У меня есть пример кода для обнаружения равносторонних фигур, но я не знаю, подходит ли он.
public void DetectQuadrilateralType(Bitmap bitmap)
{
BlobCounter blobCounter = new BlobCounter();
blobCounter.ProcessImage(bitmap);
Blob[] blobs = blobCounter.GetObjectsInformation();
//Graphics object to draw
Pen pen;
Graphics g = Graphics.FromImage(bitmap);
SimpleShapeChecker shapeChecker = new SimpleShapeChecker();
for (int i = 0; i < blobs.Length; i++)
{
List edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);
List corners;
if (i < edgePoints.ToArray().Length && i > -1)
{
try
{
if (shapeChecker.IsConvexPolygon(edgePoints, out corners))
{
PolygonSubType subType = shapeChecker.CheckPolygonSubType(corners);
pen = new Pen(colors[subType], 2);
g.DrawPolygon(pen, ToPointsArray(corners));
pen.Dispose();
}
}
catch (Exception e) { }
}
}
g.Dispose();
}
Вот изображение, которое я пытаюсь обнаружить:
Если кто-нибудь знает, как я могу обнаружить это белое пятно с помощью AForge или каким-либо другим образом с помощью C#/.NET, я был бы очень признателен.
Приведенный выше код обнаруживает только края, поэтому он обнаружит фигуру только в том случае, если у нее есть острые края, что бывает редко.
РЕДАКТИРОВАТЬ
Я как бы работаю со следующим методом
public void DetectBigBlobs(Bitmap bitmap)
{
BlobCounter blobCounter = new BlobCounter();
blobCounter.ProcessImage(bitmap);
Rectangle[] rects = blobCounter.GetObjectsRectangles();
//Graphics object to draw
Pen pen = new Pen(Color.Red, 2);
Graphics g = Graphics.FromImage(bitmap);
foreach (Rectangle rect in rects)
{
if (rect.Width > 200 && rect.Height > 150)
{
g.DrawRectangle(pen, rect);
}
}
pen.Dispose();
g.Dispose();
}
Должен быть лучший способ, чем использование фиксированной ширины (потому что они могут сильно различаться)