我有白色背景且形状简单的图像(每个图像都有一个形状)。我想确定某个点(x,y)是否在形状内。如何使用opencv做到这一点?
使用pointPolygonTest
功能。 pointPolygonTest
教程。
要确定一个点是在形状的内部,外部还是边缘,可以使用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