最近,我开始使用OpenCV和C ++进行项目。 我在desmos上画一条曲线,然后将其输入到程序中。该程序的目的是测量线条的弯曲程度以及将其拉直的程度。
在下面的图像中看到的红线(上面有绿色和红色的点)是来自desmos的图形线。带有空心圆的紫色线是需要满足的模型线。我已经写了一些基本函数来计算给定y值的每个x值在直线上的大小。我这样做是为了将曲线上的点与直线上的点对齐。
用于计算值的代码为:
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很累,但是如果使用自己的函数,将无法获得灵活的结果。
在此先感谢您的帮助。