OpenCV Python 如何找到图像中点与轮廓之间的最短距离?

本文介绍了如何利用OpenCV的cv2.pointPolygonTest()函数计算图像中一个点与轮廓之间的最短距离。通过读取图像、转为灰度、二值化、寻找轮廓,然后对特定点进行测试,可以确定点在轮廓内、外或边界上的关系,并可视化结果。
摘要由CSDN通过智能技术生成

 

我们可以使用 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)。我们计算输入图像中点和轮廓之间的最短距离。输入图像只有一个对象轮廓。我们还在图像上绘制轮

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值