无法确定对象在 OpenCV 中的凹陷性
Unable to determine object's concavity in OpenCV
我正在尝试使用 OpenCV 检测图像中的凸五边形。我正在使用以下图片:
我先找到图像中的轮廓,然后这样做:
approx = cv2.approxPolyDP(c, 0.04 * perimeter, True)
isPentagon = len(approx) == 5
当我在图像上 运行 时,我得到了这个结果:
正在检测图像中的白色部分。我以为检查凹面就可以解决这个问题。这是我的尝试:
isPentagon = len(approx) == 5 and cv2.isContourConvex(c)
然而,对于我尝试的所有五边形,isContourConvex
返回 False
。我不确定为什么。我也尝试了其他图像,同样的事情发生了。变量c
是轮廓。
有办法解决这个问题吗?也许是检查多边形是否规则的更好方法?
问题是我将 cv2.findContours
找到的原始轮廓传递给 cv2.isContourConvex
。原始轮廓有很多点,其中一些点赋予形状凹面特征。
为了解决这个问题,我不得不打电话给 cv2.isContourConvex(approx)
。这将评估恰好有五个边和五个顶点的五边形的近似值。虽然我稍后会绘制初始轮廓,但在近似值上评估 contourConvex 函数产生了正确的结果。
我正在尝试使用 OpenCV 检测图像中的凸五边形。我正在使用以下图片:
我先找到图像中的轮廓,然后这样做:
approx = cv2.approxPolyDP(c, 0.04 * perimeter, True)
isPentagon = len(approx) == 5
当我在图像上 运行 时,我得到了这个结果:
正在检测图像中的白色部分。我以为检查凹面就可以解决这个问题。这是我的尝试:
isPentagon = len(approx) == 5 and cv2.isContourConvex(c)
然而,对于我尝试的所有五边形,isContourConvex
返回 False
。我不确定为什么。我也尝试了其他图像,同样的事情发生了。变量c
是轮廓。
有办法解决这个问题吗?也许是检查多边形是否规则的更好方法?
问题是我将 cv2.findContours
找到的原始轮廓传递给 cv2.isContourConvex
。原始轮廓有很多点,其中一些点赋予形状凹面特征。
为了解决这个问题,我不得不打电话给 cv2.isContourConvex(approx)
。这将评估恰好有五个边和五个顶点的五边形的近似值。虽然我稍后会绘制初始轮廓,但在近似值上评估 contourConvex 函数产生了正确的结果。