取樣點(10,10),(20,0),(20,40),(20,20)。擬合線 - MatLab不同意OpenCV
在Matlab polyfit返回斜率1,但對於相同的數據openCV fitline返回斜率10.7。從手工計算,近垂直線(斜率10.7)是一個更好的最小二乘擬合。
我們如何從兩個圖書館中獲得不同的信息?
OpenCV的代碼 - (iOS上)
vector<cv::Point> vTestPoints;
vTestPoints.push_back(cv::Point(10, 10));
vTestPoints.push_back(cv::Point(20, 0));
vTestPoints.push_back(cv::Point(20, 40));
vTestPoints.push_back(cv::Point(20, 20));
Mat cvTest = Mat(vTestPoints);
cv::Vec4f testWeight;
fitLine(cvTest, testWeight, CV_DIST_L2, 0, 0.01, 0.01);
NSLog(@"Slope: %.2f",testWeight[1]/testWeight[0]);
xcode的日誌顯示
2014-02-12 16:14:28.109 Application[3801:70b] Slope: 10.76
Matlab代碼
>> px
px = 10 20 20 20
>> py
py = 10 0 20 40
>> polyfit(px,py,1)
ans = 1.0000e+000 -2.7733e-014
斜坡'10.76' - 偏移量是多少? – nkjt
Matlab/polyfit - 穿過(10,10)的斜線,斜率1.0。 --- openCV/fitline - 貫穿線(17.5,17.5),斜率10.76。 –