參考**:
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 座標是帶有...