(原)opencv直線擬合fitLine


轉載請注明出處

http://www.cnblogs.com/darkknightzh/p/5486234.html

參考網址:

http://blog.csdn.net/thefutureisour/article/details/7599537

 1 Mat img(60, 60, CV_8UC1, Scalar(0));
 2     std::vector<Point2f> points;
 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));
 7 
 8     //儲存擬合直線的容器  
 9     Vec4f 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 
14     for (auto i = 0; i < points.size(); i++)
15         cv::circle(img, cvPoint(points.at(i).x, points.at(i).y), 2, Scalar(255));
16 
17     double 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中的前兩個值 給出的是直線的方向的單位向量,后兩個值給出的是該直線通過的一個點(轉自參考網址)。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM