5
我正在嘗試使用AForge.NET來檢測圖像上的粗白線。AForge.NET白色斑點檢測
這就像我得到的管道,並且是應用閾值過濾器後所需的結果。
我知道如何檢測形狀,而且我已經這樣做了,但是由於它沒有邊並且不是圓形,所以在任何形狀下都不匹配。
我有檢測等邊形的示例代碼,但我不知道這是否相關。
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<IntPoint> edgePoints = blobCounter.GetBlobsEdgePoints(blobs[i]);
List<IntPoint> 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();
}
這裏的圖像我試圖檢測
http://i206.photobucket.com/albums/bb29/cheater1034/pipe.png
如果任何人有任何想法我怎麼能檢測到白色斑點與AForge或以其它方式使用C#/。NET我」我真的很感激它:O
上面的代碼只檢測邊緣,所以它只會檢測形狀,如果它有一個尖銳的邊緣,很少會是這種情況。
編輯
我有點有它下面的方法工作
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();
}
必須有比使用固定寬度(因爲他們可以有很大不同)