cvFitLine直线拟合函数的应用

本文介绍了OpenCV中的cvFitLine函数,用于2D和3D点集的直线拟合。通过示例展示了如何使用该函数进行直线拟合,并生成随机点分布,同时探讨了不同距离类型的拟合方法。此外,还讲解了OpenCV中随机数的生成方法,包括均匀分布和正态分布。
摘要由CSDN通过智能技术生成
OpenCV中 CvSeq 对象由以下语句生成

 //创建 CvSeq的容器对象

  CvMemStorage* storage = cvCreateMemStorage(0);


  // 创建 CvSeq对象
  // 第一个参数  生成后的序列的标志( 不甚解)
  // 第二个参数 队列(Sequence)头的Size
  // 第三个参数  节点的Size
  // 第四个参数  存储CvSeq的容器对象

 CvSeq* point_seq = cvCreateSeq( CV_32FC2, sizeof(CvSeq),sizeof(CvPoint2D32f), storage );


用完后,以下列形式释放内存

 cvClearSeq(point_seq);
 cvReleaseMemStorage(&storage);

向CvSeq中添加数据时:
cvSeqPush(point_seq, &cvPoint2D32f(x坐标,y坐标));

 FitLine函数的用法:

// 二维空间点拟合时 是 float[4]
// 三位空间点拟合时 是 float[6]
float *line = new float[4];

 // 第一个参数: 存储点序列
// 第二个参数: 拟合算法,其中 CV_DIST_L2 就是平常的最小二乘法
// 第三,第四,第五参数推荐值是0,   0.01,  0.01,
// 第六参数: line中存储返回值
// 二维空间时: line[0--3] 分别为 (vx, vy,x0, y0)
//     其中 vx, vy 是正规化之后的斜率向量。 x0,y0 是直线经过的点。
// 三维空间时:line[0--5]  分别是 (vx, vy,vz, x0, y0, z0) 。意义同上

cvFitLine(point_seq,CV_DIST_L2,0,0.01,0.01,line);


FitLine:2D 或 3D 点集的直线拟合 

void cvFitLine( const CvArr* points,    int dist_type,    double param,  double reps,   double aeps,   float* line );

points :2D 或 3D 点集,32-比特整数或浮点数坐标 

dist_type :拟合的距离类型 (见讨论). 

param :对某些距离的数字参数,如果是 0, 则选择某些最优值 

reps, aeps :半径 (坐标原点到直线的距离) 和角度的精度,一般设为0.01。 

line :输出的直线参数。2D 拟合情况下,它是包含 4 个浮点数的数组 (vx, vy, x0, y0),其中 (vx, vy) 是线的单位向量而 (x0, y0) 是线上的某个点. 对 3D 拟合,它是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值