从像素坐标C#列表中找到圆的中心坐标

我有一个BitMap图像,其中图像包含一个黑色圆圈.我发现图像中所有黑色的像素(代表圆圈)并将点保存到列表中.

我迷路的地方是从列表中保存的坐标中找到圆的中心.我认为我需要以某种方式找到圆的直径,但是如何遍历像素来确定该直径呢?

解决方法:

一种幼稚的方法可能是找到圆的边界框.

好像您已经在列表中拥有所有点一样,您可以找到顶部,底部,左侧和右侧.

假设(0,0)在坐标系的左上方:

>顶部是最小Y点.
>底部是最大Y点.
>左边是最小X的点.
>右边是最大X的点.

边界框的中心是圆的中心.
同样,边界框的宽度/高度是其直径.

编辑:替代解决方案

找出圆中所有点的平均值.
这将使您成为圆心.

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 }; 

这可能是更理想的解决方案,因为可以在扫描图像中的黑色像素时完成此操作.而不是查找黑色像素,然后使用LINQ.

上一篇:GMS_Camera相关_完善修改中 若有建议欢迎提醒


下一篇:android中像素的密度