我试图用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)
。这将评估正好有五条边和五个顶点的五角大楼的近似值。虽然我后来会画出初始轮廓,但在近似上计算轮廓凸函数得到了正确的结果。你知道吗相关问题 更多 >
编程相关推荐