cv2.distanceTransform函数的用法,提高精度

最近相求一个二值图中,白色的值到最近的黑色值。换句话说:相求下图中的白色图形中的最大内切半径。
在这里插入图片描述
思路如下:
1、转换为距离图
2、找出最大的距离就是最大内切圆的半径。
但是在转换的过程中,使用到cv2.distanceTransform函数

distance_transform = cv2.distanceTransform(mask, cv2.DIST_L2, 0)

一般会有三个参数,第二个参数是欧式距离,最关键的控制精度的第三个参数的含义如下:

在 OpenCV 的 cv2.distanceTransform 函数中,掩码大小的选择会影响计算的精度和性能。通常,掩码越大,计算的精度越高,但计算的复杂度和时间也会增加。
3x3掩码(cv2.DIST_MASK_3 或者直接使用 3):这是一个较小的掩码,计算速度较快,但精度较低。适用于对精度要求不高的应用场景。
5x5掩码(cv2.DIST_MASK_5 或者直接使用 5):这是一个较大的掩码,计算速度较慢,但精度较高。适用于对精度要求较高的应用场景。
0的话:如果你使用的是 0 作为掩码大小,OpenCV将自己选择一个合适的掩码来执行操作。

三个值在我验证的过程中,发现0的精度最高,5的精度次之,3的精度最低。
因为我画的是一个半径为25的圆,结果如下:

参数为3: 最大半径为24.289299
参数为5: 最大半径为24.768995
参数为0: 最大半径为25.019992 
结果图在下面,分别是350

取3
取5
取0
可以看到取0的精度是最高的,建议各位小伙伴用的时候直接取0。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: cv2.distanceTransform()是OpenCV中的一个函数,用于计算图像中非零像素点到最近零像素点的距离。它返回一个与输入图像大小相同的浮点型矩阵,其中每个像素点的值表示到最近零像素点的距离。 ### 回答2: cv2.distancetransform是OpenCV中一个用于计算距离变换的函数。距离变换是指计算图像中每一个像素点与最近的目标像素点之间的距离,并将其映射到新的图像中。 这个函数主要有两种模式:CV_DIST_L1和CV_DIST_L2。CV_DIST_L1使用曼哈顿距离计算像素点之间的距离,即两点之间的横向和纵向的距离之和;CV_DIST_L2使用欧式距离计算像素点之间的距离,即两点之间的直线距离。 cv2.distancetransform函数采用二值图像作为输入,并返回一个浮点型图像,其中每个像素点的值表示了该点与最近的目标像素点之间的距离。 这个函数常用于图像分析和图像处理任务中,如图像分割、形态学操作等。通过距离变换,我们可以获取到图像中各个像素点到目标像素点的距离,从而能够更好地理解图像中的结构和形状,进而进行进一步的处理和分析。 总结起来,cv2.distancetransform是一个用于计算距离变换的函数,它可以通过输入二值图像,计算出每个像素点与最近目标像素点之间的距离,并将结果映射到新的图像中。这个函数在图像分析和处理中起到了重要的作用。 ### 回答3: cv2.distancetransform是OpenCV库中的一个函数,用于进行距离变换。距离变换是将图像中的每个像素点转换为离其最近的一个特定对象的距离的操作。具体而言,cv2.distancetransform函数可以计算灰度图像中每个像素点到离该像素点最近的边界像素点的欧氏距离。 在使用cv2.distancetransform函数时,需要传入一个二进制图像作为输入参数,表示需要进行距离变换的对象区域。函数将返回一个与输入图像相同大小的图像,其中每个像素点的值表示该像素点到最近边界像素点的欧氏距离。 距离变换在图像处理中有多种应用,如计算图像中每个像素点到离其最近的边界像素点的距离,可以用于图像分割、目标检测等任务。距离变换还可以用于计算骨架化图像、计算图像中物体的中心距离等。 总之,cv2.distancetransform函数是OpenCV中用于计算图像距离变换的函数,通过该函数可以实现将图像中每个像素点转换为离其最近的边界像素点的距离的操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值