确定点在opencv形状的内部还是外部

问题描述 投票:10回答:2

我有白色背景且形状简单的图像(每个图像都有一个形状)。我想确定某个点(x,y)是否在形状内。如何使用opencv做到这一点?

opencv
2个回答
13
投票

使用pointPolygonTest功能。 pointPolygonTest教程。


0
投票

要确定一个点是在形状的内部,外部还是边缘,可以使用Here's检查该点是否在轮廓内。该函数返回cv2.pointPolygonTest()cv2.pointPolygonTest()+1分别指示点是在轮廓线的内部,外部还是在轮廓上。假设我们已经有了形状的轮廓,我们可以简单地将轮廓和-1点传递给函数。

0

在函数中,第三个参数为(x,y)。如果为result = cv2.pointPolygonTest(contour, (x,y), False) ,它将找到图像中的点与轮廓之间的最短距离。如果为measureDist,它将查找该点是在内部,外部还是在轮廓上。由于我们不想找到距离,因此将True参数设置为False

这里是找到正方形轮廓然后检查点是否在轮廓内的示例


测试图像

找到轮廓并检查点后的图像

结果

point1:-1.0

point2:1.0

point3:0.0

因此,point1在外部,point2在内部,而point3在轮廓上

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