想象我们有一张图像,周围有陆地、湖泊和湖内的岛屿。
我们使用二进制阈值和 findContours 来获取湖泊和岛屿的轮廓。
我们使用 pointPolygonTest 和measureDist=True,来获取湖内给定点到岸边的距离。
然而,我们真正想要的是与陆地的距离。这些岛屿也算作土地。
一种看待它的方式是,就 pointPolygonTest 而言,我们希望岛屿的面积(层次结构中湖的轮廓下方)也算作我们的“边缘”。我们想要定义一个带有孔的“多边形”。但据我所知,将内岛的轮廓与湖泊的轮廓合并将导致跨湖的连接线,这是我们不想要的。
你会怎么做?有没有一种简单的方法来测量与 colour 的距离,或者其他函数返回类似于 pointPolygonTest 的距离?
我想到的唯一解决方案是我们必须对每个点使用 pointPolygonTest 多次:一次针对湖泊轮廓,一次针对每个岛屿轮廓。这确实有效,但是,因为最终我们希望获得湖内每个像素的这个距离......任何关于处理较少的解决方案的想法都将受到欢迎。
您已经有了掩码,所以用它来查找。
对掩模应用显式距离变换(一次)以获得距离。