OpenCV直線擬合

2021-07-11 16:47:54 字數 694 閱讀 2712

——摘抄自

opencv 提供的直線擬合函式。函式原型如下:

void fitline( inputarray points, 

outputarray line,

int disttype,

double param,

double reps,

double aeps );

disttype 指定擬合函式的型別,可以取 cv_dist_l2、cv_dist_l1、cv_dist_l12、cv_dist_fair、cv_dist_welsch、cv_dist_huber。

param 就是 cv_dist_fair、cv_dist_welsch、cv_dist_huber 公式中的c。如果取 0,則程式自動選取合適的值。

reps 表示直線到原點距離的精度,建議取 0.01。

aeps 表示直線角度的精度,建議取 0.01。

計算出的直線資訊存放在 line 中,為 cv::vec4f 型別。line[0]、line[1] 存放的是直線的方向向量。line[2]、line[3] 存放的是直線上乙個點的座標。

如果直線用 y=kx+b 來表示,那麼 k = line[1]/line[0],b = line[3] - k * line[2]。

如果直線用 ρ=xcosθ+ysinθ 來表示, 那麼 θ=arctank+π2

Opencv 擬合直線

最小二乘法是勒讓德 a.m.legendre 於1805年在其著作 計算慧星軌道的新方法 中提出的。最小二乘法就是通過最小化誤差的平方和,使得擬合物件無限接近目標物件。在影象處理中主要用於擬合線,通過求取樣點距離誤差最小的線,可以是直線,曲線,橢圓,圓等。求解方法目前分為多項式和概率 最大似然 估計...

OpenCV 學習(直線擬合

hough 變換可以提取影象中的直線。但是提取的直線的精度不高。而很多場合下,我們需要精確的估計直線的引數,這時就需要進行直線擬合。直線擬合的方法很多,比如一元線性回歸就是一種最簡單的直線擬合方法。但是這種方法不適合用於提取影象中的直線。因為這種演算法假設每個資料點的x 座標是準確的,y 座標是帶有...

OpenCV下的直線擬合

出處 opencv中 cvseq 物件由以下語句生成 建立 cvseq的容器物件 cvmemstorage storage cvcreatememstorage 0 建立 cvseq物件 第乙個引數 序列的符號標誌 第二個引數 佇列 sequence 頭的size,必須大於等於sizeof cvse...