擬合直線後簡單快速求解兩直線交點

2021-10-08 03:56:31 字數 1137 閱讀 4751

opencv 自帶直線擬合函式:

void fitline(inputarray points, outputarray line, int disttype, double param, double reps, double aeps)

輸入points:c++中一般定義為std::vector points;

輸出line:c++中一般定義為std::vector lines;

第三個引數最重要,目前使用最為廣泛的為最小二乘法(cv::dist_l2),相比較其他引數效果更好,速度更優。

//根據輸出的line,定義兩條直線的輸出分別為linea、lineb

//定義直線方程:a1x+b1y+c1 = 0;a2x+b2y+c2 = 0;

//double a1 =

0,b1 =

0, c1 =0;

a1 =

-linea[1]

;b1 = linea[0]

;c1 =

-(linea[2]

* a1 + linea[3]

* b1)

;double a2 =

0,b2 =

0, c2 =0;

a2 =

-lineb[1]

;b2 = lineb[0]

;c2 =

-(lineb[2]

* a2 + lineb[3]

* b2)

;//根據數學公式得到交點:

// x = (b1 * c2 - b2 * c1) / (a1 * b2 - a2 * b1)

// y = (a2 * c1 - a1 * c2) / (a1 * b2 - a2 * b1)

double a =

(b1 * c2 - b2 * c1)

;double b =

(a2 * c1 - a1 * c2)

;double c =

(a1 * b2 - a2 * b1)

;point point;

point.x =

(a / c)

;point.y =

(b / c)

;

直線擬合 matlab基礎直線擬合

本文介紹利用矩陣除法進行最小二乘直線擬合 矩陣除法最小二乘直線擬合的函式檔案,參考matlab2018從入門到精通 中文版 function k,b linefit x,y n length x x reshape x,n,1 生成列向量 y reshape y,n,1 a x,ones n,1 b...

擬合專題 直線擬合

閒來無事,整理下擬合方面的一些方法 部分內容參考gloomyfish grooveboy等部落格,在此先行謝過 直線擬合方法主流方法有最小二乘 hough兩種,其他如halcon上的最小距離也是最小二乘的思想,其他如hough變換和最小二乘結合 混沌粒子群結合等等 1 最小二乘擬合直線 曲線擬合中最...

OpenCV直線擬合

摘抄自 opencv 提供的直線擬合函式。函式原型如下 void fitline inputarray points,outputarray line,int disttype,double param,double reps,double aeps disttype 指定擬合函式的型別,可以取 c...