从两点重画一条线会导致稍微不准确的结果

时间:2018-10-09 05:40:15

标签: c++ opencv math

最近,我开始使用OpenCV和C ++进行项目。 我在desmos上画一条曲线,然后将其输入到程序中。该程序的目的是测量线条的弯曲程度以及将其拉直的程度。

在下面的图像中看到的红线(上面有绿色和红色的点)是来自desmos的图形线。带有空心圆的紫色线是需要满足的模型线。我已经写了一些基本函数来计算给定y值的每个x值在直线上的大小。我这样做是为了将曲线上的点与直线上的点对齐。

In correct slope calculation

用于计算值的代码为:

double slopeOf(Point first, Point second) {
    return (second.y - first.y) / (second.x - first.x);
}

double f(Point first, Point second, int y) {
    // return x of point with y value, on given line
    return ((y - first.y) / slopeOf(first, second)) + first.x;
}

如您所见,线底部的空心点以直线为中心,并且很准确。但是当您沿直线上升时,这些点开始偏离直线。

为什么会这样?

另外:我在OpenCV中使用LineIterator很累,但是如果使用自己的函数,将无法获得灵活的结果。

在此先感谢您的帮助。

0 个答案:

没有答案
相关问题