这个问题可以用任何类型的编程语言来回答,因为我想要一些算法方面的帮助,但我更喜欢 Delphi。我的任务是检测和计算随机图片的多个形状(在 1 和 N 之间 - 主要是圆形或椭圆形)并计算它们的中间并将它们作为图片的坐标返回。每个形状的中间可以有一个填充物(但没关系)。这些形状彼此相距至少 1+ 像素。没有一个形状会喜欢与另一个形状或图片的角落融合在一起。图片的背景始终具有相同的背景颜色,这实际上并不重要,因为与背景相比,形状的边框/框架始终是不同的颜色。这使得检测形状变得容易。我正在考虑逐个像素地收集坐标,然后在每个形状周围绘制一个不可见的矩形/正方形来计算中间。然后我也听说过scanline,但我认为在这种情况下它不会更快。所以我的问题是,我该如何计算:
- 图中有多少个形状。
- 我如何(或多或少)计算它们的确切中间值。
几张图片来可视化任务:
这是一张随机形状的图片(大部分是封闭的圆圈)正如你所看到的,它们彼此分开就好了。
然后我可以轻松地在每个形状周围绘制/计算一个虚构的矩形/正方形,并像这样计算它的中间:
在我有了矩形/正方形之后。我可以很容易地计算出中间。我该如何开始?
PS.:我在 mspaint 中画了一些圆圈。我必须补充一点,所有形状都是封闭的,这使得可以毫无问题地填充图片中的每个形状!
感谢您的帮助。