包含不需要的点的轮廓近似

Arn*_*ein 6 opencv polygon shapes approximation

嗨,我有一个多边形问题.我不知道该找什么,所以我决定在这里问一下.下图显示了一个简单的形状.使用OpenCV的findContours()检测轮廓,并通过CV_CHAIN_APPROX_TC89_KCOS(对于那些想知道如何完成此操作的算法)算法进行近似,以便将一行中的所有点汇总为一行.所以无论如何,一些轮廓包含某种形状,我称之为噪音.下图显示了噪音的含义.红线是轮廓.(抱歉没有油漆技巧)

在此输入图像描述

我的目标是重新定义形状以接近形状,但忽略这种"噪音".所以轮廓应该是这样的.蓝线显示校正的轮廓.

在此输入图像描述

rot*_*age 5

  1. 尝试用......来检测角落cvGoodFeatuersToTrack()但是有一个标准,角落应该被相隔很远的距离......如果角落形成一个群体就会丢弃它们.
  2. 从轮廓中的点列表中...选择具有(最高x,最高y),(最高x,最低y),(最低x,最高y)和(最低x,最低y)的点. ..现在加入这四点......
  3. 如果角落本身有"噪音",那么尝试使用霍夫变换检测图像中的直线...