直线拟合fitLine
void fitLine( InputArray points, OutputArray line, int distType,
double param, double reps, double aeps );
points:二维点的数组或vector
line:输出直线,Vec4f (2d)或Vec6f (3d)的vector
distType:距离类型
param:距离参数
reps:径向的精度参数
aeps:角度精度参数
距离类型可取以下值:
椭圆拟合fitEllipse
RotatedRect fitEllipse( InputArray points );
points:二维点集,要求拟合的点至少为6个点。存储在std::vector<>或者Mat
输出:RotatedRect 类型的矩形,是拟合出椭圆的最小外接矩形。
该函数使用的是最小二乘的方法进行拟合的。
多边形拟合approxPolyDP
void approxPolyDP( InputArray curve,OutputArray approxCurve,
double epsilon, bool closed);
curve:输入的点集
approxCurve:输出的点集,当前点集是能最小包容指定点集的。画出来即是一个多边形。
epsilon:指定的精度,也即是原始曲线与近似曲线之间的最大距离。
closed:若为true,则说明近似曲线是闭合的;反之,若为false,则断开。
该函数采用是道格拉斯-普克算法(Douglas-Peucker)来实现。