opencv 拟合圆 c++_【OpenCV3】直线拟合--FitLine()函数详解

本文介绍了OpenCV3中的FitLine()函数,该函数用于拟合二维或三维直线。详细讲解了函数参数,包括输入点集、输出直线参数以及距离类型的选取,帮助理解如何通过FitLine()最小化点到直线的距离来实现直线拟合。
摘要由CSDN通过智能技术生成

一、FitLine()函数原型

CV_EXPORTS_W void fitLine( InputArray points, // 待输入点集(一般为二维数组或vector点集)OutputArray line, // 输出点集(一个是方向向量,另一个是拟合直线上的点)(Vec4f(2d)或Vec6f(3d)的vector)int distType, // 距离类型double param, // 距离参数double reps, // 径向的精度参数double aeps ); // 角度精度参数

第一个参数是用于拟合直线的输入点集,可以是二维点的cv::Mat数组,也可以是二维点的STL vector。

第二个参数是输出的直线,对于二维直线而言类型为cv::Vec4f,对于三维直线类型则是cv::Vec6f,输出参数的前半部分给出的是直线的方向,而后半部分给出的是直线上的一点(即通常所说的点斜式直线)。

第三个参数是距离类型,拟合直线时,要使输入点到拟合直线的距离和最小化(即下面公式中的cost最小化),可供选的距离类型如下表所示,ri表示的是输入的点到直线的距离。

CV_DIST_USER =-1, /* User defined distance */CV_DIST_L1 =1, /* distance = |x1-x2| + |y1-y2| */CV_DIST_L2 =2, /* the simple euclidean distance */CV_DIST_C =3, /* distance = max(|x1-x2|,|y1-y2|) */CV_DIST_L12 =4, /* L1-L2 metric: distance = 2(sqrt(1+x*x/2) - 1)) */CV_DIST_FAIR =5, /*
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值