OpenCV 在地图上检测六边形网格

OpenCV detecting hexagon grid on a map

我正在尝试使用 OpenCv 检测棋盘游戏地图的 Android 六边形字段。地图看起来像这样:

[样图]

我尝试仅使用 HSV 的值获取等高线,我设法获得了一些六边形,但不幸的是不是所有六边形,我在检测有河流或道路穿过它们的六边形时遇到了大部分问题。

我设法得到了类似的东西:

[检测到六边形]

我什至试着让边框变粗,但没有太大帮助。 为了检测所有六边形,我想到了对检测到的近似大小进行平均,然后逐个像素地尝试检测颜色的变化(接近黑色)。后来我想在地图的照片上检测六边形,所以我不能真正依赖其他六边形的大小。

您认为解决这个问题的最佳方法是什么?

编辑: 谢谢 我刚刚开始实施您的想法并且效果很好,现在我得到了水平线:

您处理的是规则网格,因此您只需检测几个甚至一个即可计算所有其他网格。更多会更好,因为您将能够计算均值,并且会更准确。要查找轮廓,查找颜色渐变可能很有用。