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...