//创建 CvSeq的容器对象
CvMemStorage* storage = cvCreateMemStorage(0);
// 第一个参数 生成后的序列的标志( 不甚解)
// 第二个参数 队列(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 拟合,它是