如何在openCVs pointPolygonTest中考虑内部轮廓?

问题描述 投票:0回答:1

想象我们有一张图像,周围有陆地、湖泊和湖内的岛屿。

我们使用二进制阈值和 findContours 来获取湖泊和岛屿的轮廓。

我们使用 pointPolygonTest 和measureDist=True,来获取湖内给定点到岸边的距离。

然而,我们真正想要的是与陆地的距离。这些岛屿也算作土地。

一种看待它的方式是,就 pointPolygonTest 而言,我们希望岛屿的面积(层次结构中湖的轮廓下方)也算作我们的“边缘”。我们想要定义一个带有孔的“多边形”。但据我所知,将内岛的轮廓与湖泊的轮廓合并将导致跨湖的连接线,这是我们不想要的。

你会怎么做?有没有一种简单的方法来测量与 colour 的距离,或者其他函数返回类似于 pointPolygonTest 的距离?

我想到的唯一解决方案是我们必须对每个点使用 pointPolygonTest 多次:一次针对湖泊轮廓,一次针对每个岛屿轮廓。这确实有效,但是,因为最终我们希望获得湖内每个像素的这个距离......任何关于处理较少的解决方案的想法都将受到欢迎。

python opencv contour
1个回答
0
投票

您已经有了掩码,所以用它来查找。

对掩模应用显式距离变换(一次)以获得距离。

© www.soinside.com 2019 - 2024. All rights reserved.