我有一张包含黑色圆形的BitMap图像。我已经找到了代表圆形的所有黑色像素,并将这些点保存到列表中。
但是我不知道如何从列表中保存的坐标中找到圆心。我认为我需要找到圆的直径,但是如何循环像素来确定直径呢?
但是我不知道如何从列表中保存的坐标中找到圆心。我认为我需要找到圆的直径,但是如何循环像素来确定直径呢?
当涉及到图像时,"圆形"是一个相对的术语,也就是说,你所指的形状以像素显示,可能只是圆形的代表。
然而,要获得中点,你只需要获取范围。
假设你有一个 List<Point>
var left = list.Min(x => x.X);
var right = list.Max(x => x.X);
var top= list.Min(x => x.Y);
var bottom = list.Max(x => x.Y);
Point mid = new Point();
mid.X = left + (right-left) / 2; //calculate mid point x
mid.Y = top + (bottom-top) / 2; //calculate mid point y
var aggregate = points.Aggregate((point, result) => new Point{ X = point.X + result.X, Y = point.Y + result.Y });
var center = new Point { X = aggregate.X / points.Count, Y = aggregate.Y / points.Count };