无法确定对象在 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 函数产生了正确的结果。