我目前正在使用C#和AForge.NET進行字符識別的程序,現在我正在努力處理blob。消除另一個blob內的blob
我這是怎麼產生的斑點:
BlobCounter bcb = new BlobCounter();
bcb.FilterBlobs = true;
bcb.MinHeight = 30;
bcb.MinWidth = 5;
bcb.ObjectsOrder = ObjectsOrder.XY;
bcb.ProcessImage(image);
我也用矩形框標記他們:
Rectangle[] rects;
rects = bcb.GetObjectsRectangles();
Pen pen = new Pen(Color.Red, 1);
Graphics g = Graphics.FromImage(image);
foreach (Rectangle rect in rects)
{
g.DrawRectangle(pen, rect);
}
執行後,我的參考圖像看起來是這樣的:
正如你所看到的,幾乎所有的字符都被識別出來。不幸的是,某些角色包括斑點內的斑點,例如, 「g」,「o」或「d」。
我想消除另一個blob內的斑點。
我試圖調整矩形的繪製,實現我的目標:
foreach (Rectangle rect in rects)
{
for (int i = 0; i < (rects.Length - 1); i++)
{
if (rects[i].Contains(rects[i + 1]))
rects[i] = Rectangle.Union(rects[i], rects[i + 1]);
}
g.DrawRectangle(pen, rect);
}
...但它沒有成功可言。
也許你們有些人可以幫助我嗎?
形態充盈怎麼樣? –