Я недавно начал обработку изображений, и я хочу написать программу для обнаружения фигур, таких как круги на изображениях. Мой пример кода такой же, как приведенный ниже, но он не работает :( Я прочитал большинство связанных вопросов и ответов вЭтот форум и попытался решить мою проблему, но у меня ничего не получилось. Этот код работает, но у него нет правильных выходных данных. Если у меня есть тело, чтобы помочь мне, я был бы очень благодарен.
DialogResult x;
x = openFileDialog1.ShowDialog();
if (x == DialogResult.Cancel)
return;
pic1.ImageLocation = openFileDialog1.FileName;
Bitmap bmp = (Bitmap)Bitmap.FromFile(pic1.ImageLocation);
Bitmap bmp2 = new Bitmap(bmp.Width, bmp.Height);
BlobCounter blobcounter = new BlobCounter();
blobcounter.ProcessImage(bmp2);
blobcounter.FilterBlobs = true;
blobcounter.MinHeight = bmp2.Height;
blobcounter.MinWidth = bmp2.Width;
Blob[] blobs = blobcounter.GetObjectsInformation();
Graphics g = Graphics.FromImage(bmp2);
SimpleShapeChecker shapeChecker = new SimpleShapeChecker();
Pen yellowpen = new Pen(Color.Yellow, 2);
for (int i = 0; i < blobs.Length; i++ )
{
List<IntPoint> edgePoints = blobcounter.GetBlobsEdgePoints(blobs[i]);
AForge.Point center;
float radius;
if(shapeChecker.IsCircle(edgePoints, out center, out radius))
{
g.DrawEllipse(yellowpen,
(int)(center.X - radius),
(int)(center.Y - radius),
(int)(radius * 2),
(int)(radius * 2));
}
}
yellowpen.Dispose();
g.Dispose();
}