无法确定OpenCV中对象的凹度

2024-09-24 22:28:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用OpenCV检测图像中的凸五边形。我正在使用以下图像:

enter image description here

我首先在图像中找到轮廓,然后执行以下操作:

approx = cv2.approxPolyDP(c, 0.04 * perimeter, True)
isPentagon = len(approx) == 5

当我在图像上运行时,我得到了以下结果:

enter image description here

正在检测图像中的白色部分。我以为检查凹度就能解决问题。以下是我的尝试:

isPentagon = len(approx) == 5 and cv2.isContourConvex(c)

然而,对于我尝试的所有五边形,isContourConvex返回False。我不知道为什么。我也尝试了其他图像,同样的情况也发生了。变量c是轮廓。你知道吗

有办法解决这个问题吗?也许是检查多边形是否规则的更好方法?你知道吗


Tags: 图像truelencv2opencv轮廓白色approx
1条回答
网友
1楼 · 发布于 2024-09-24 22:28:50

问题是我把cv2.findContours发现的原始轮廓传递到cv2.isContourConvex。原始轮廓有很多点,其中一些点使形状具有凹面特征。你知道吗

要解决这个问题,我必须调用cv2.isContourConvex(approx)。这将评估正好有五条边和五个顶点的五角大楼的近似值。虽然我后来会画出初始轮廓,但在近似上计算轮廓凸函数得到了正确的结果。你知道吗

相关问题 更多 >