图像轮廓是一个阵列点。我需要在每一侧接近两个点以创建四个线段。
答案 0 :(得分:0)
一种可能的方法。
找到这些点的凸包。
然后找到最远的两个顶点。这给出了第一个对角线。
然后找到距离第一个对角线最远的另外两个顶点。这给出了第二个对角线。
现在你可以使用由这四个顶点组成的四边形。
如果你想要更紧密的拟合,你可以考虑由对角线定义的四个象限中的点子集,并计算最佳拟合线,例如通过最小二乘法。
答案 1 :(得分:0)
另一个使用凸包的人:
找到点集的凸包
计算凸壳弧长。
最后计算一个近似多项式轮廓,误差等于弧长的10%(如果超过4个点会增加误差百分比)
CvInvoke.ApproxPolyDP(vec, vecApprox, 0.1 * arcLength, true);
这给出了良好的效果,并且通常用于车牌检测同样的问题。