所以我有以下图片:
现在我希望找到每个断开形状的中心点。如果可能的话,我还想找到宽度和高度。
我正在使用Java和java.awt.image包,但即使是这个问题的一般解决方案也会有所帮助。
我自己的想法是:
但这似乎有点密集,然后我必须找到中心,宽度和高度。有更简单的方法吗?有什么想法吗?
答案 0 :(得分:0)
我不知道这是不是一个好主意,但也许这会对你有所帮助:
我会从边缘发送randomWalks
并将图像分成较小的盒子并继续从较小的盒子发送randomWalks直到某个点(我不知道那个点会是什么但是你会知道这里没有小盒子有超过1个元素)
- 如果randomWalk
在没有看到任何randomWalk
的情况下切断了另一个whitecolor
,那么就会有一个新弓。例如,在我的图片中,让我们说1st randomWalk(rw1)
从(0,200)开始,rw2
从(100,0)开始,然后点击(100,200)而未触及任何whitecolor
,则您有一个(0,0,100,200)框。将其添加到myBoxes
的arraylist中。
- 现在我想到,你可以这样做:如果一个方框中的像素颜色总和等于零(或小于一个小数字),那么就有了那个盒子里没有图像。因此,您可以将其添加到其他列表中,我们将其称为myEmptyBoxes
。
- 接下来,当您确定每个框中只有一个元素时,每个框的颜色,如果两个框相等或非常接近,那么它们可能是相同的图像。如果不是自动的,它们不是同一个图像,不需要处理那两个图像/盒子。
- 我想不出下一步,这一切都在我脑海中浮现。
- 另外,我建议你使用opencv,这是一个很好的库来解决这类问题
希望这会有所帮助