1. 程式人生 > >OpenCV直線擬合

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