(原)opencv直線擬合fitLine

2021-09-08 15:00:35 字數 1134 閱讀 8951

參考**:

1 mat img(60, 60, cv_8uc1, scalar(0

));2 std::vectorpoints;

3 points.push_back(point2f(10.5, 10.2

));4 points.push_back(point2f(20.6, 20.7

));5 points.push_back(point2f(33.5, 30.2

));6 points.push_back(point2f(40.7, 50

));78//

儲存擬合直線的容器

9vec4f line;

10//

直線擬合函式

11 fitline(mat(points), line, cv_dist_l1, 0, 0.01, 0.01

);12 std::cout << "

line: (

"<< line[0] << ","

<< line[1] << ")("

<< line[2] << ","

<< line[3] << "

)\n";13

14for (auto i = 0; i < points.size(); i++)

15 cv::circle(img, cvpoint(points.at(i).x, points.at(i).y), 2, scalar(255

));16

17double k = line[1] / line[0

];18

double step = 40

;19 cv::line(img, cvpoint(line[2] - step, line[3] - k*step), cvpoint(line[2] + step, k*step + line[3]), scalar(255

));20

21 imshow("

img"

, img);

22 waitkey(0);

擬合的結果vec4f型別的line中的前兩個值給出的是直線的方向的單位向量,後兩個值給出的是該直線通過的乙個點**自參考**)。

OpenCV直線擬合

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

Opencv 擬合直線

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

OpenCV 學習(直線擬合

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