嗨,我有一个多边形问题。我不知道该找什么,所以我决定在这里问一下。下图显示了一个简单的形状。使用OpenCV的findContours()检测轮廓,并通过CV_CHAIN_APPROX_TC89_KCOS(对于那些想知道如何完成此操作的算法)算法进行近似,以便将一行中的所有点汇总为一行。 所以无论如何,一些轮廓包含某种形状,我称之为噪音。下图显示了噪音的含义。红线是轮廓。 (抱歉没有油漆技巧)
我的目标是重新定义形状以接近形状,但忽略了这种“噪音”。所以轮廓应该是这样的。蓝线显示校正的轮廓。
答案 0 :(得分:5)
cvGoodFeatuersToTrack()
....来检测角落,但是有一个标准,即角落应该以相距很远的距离分开......如果角落形成一个群体就会丢弃它们。答案 1 :(得分:1)
我可以提出另一种方法:
1)您可以使用Hough Line Transform检测图像上的线条(在使用Canny检测轮廓之前)。在方法HoughLinesP中,您不能通过使用相当大的阈值(“检测”线的最小交叉点数)来考虑小线。
2)找到所有线后,您可以找到它们的交集,如@DanielHsH所描述的here。所以你将能够找到所有角落。