我们可以使用 cv2.pointPolygonTest() 计算图像上一个点与轮廓之间的最短距离,将轮廓点坐标和点坐标作为参数传递给它。在使用 cv2.pointPolygonTest() 之前,我们需要计算图像中的轮廓。我们可以按照以下步骤来找到给定点与图像中对象轮廓之间的最短距离-
- 导入所需的库。在以下所有Python示例中,所需的Python库是 OpenCV 。确保已经安装它。
-
使用 cv2.imread() 读取输入图像。使用这种方法读取的RGB图像的格式为BGR。可选地,将读取的BGR图像分配给img。
-
现在,使用下面的 cv2.cvtColor() 函数将此BGR图像转换为灰度图像。可选地将转换后的灰度图像分配给 gray。
-
对灰度图像应用阈值处理,将其转换为二进制图像。调整第二个参数( threshValue )以获得更好的二进制图像。
-
在二进制图像中查找轮廓。
-
将第一个轮廓选择为 cnt ,或循环遍历所有轮廓。
-
使用 cv2.pointPolygonTest() 函数计算所选轮廓中点和点之间的最短距离。将所需参数传递给此函数。要计算点( 250,250 ) 与轮廓 cnt 之间的最短距离,我们使用以下代码段:
dist = cv2.pointPolygonTest(cnt,(250,250),True)
-
打印输入图像中点和对象轮廓之间计算出的最短距离。
-
在图像中绘制点和检测到的轮廓,以便更好地可视化。
让我们通过一些Python示例来了解如何找到给定点与图像中对象轮廓之间的最短距离。
示例
在此Python程序中,我们在输入图像上取了两个点(250,250)和(350,250)。我们计算输入图像中点和轮廓之间的最短距离。输入图像只有一个对象轮廓。我们还在图像上绘制轮