如何通过OpenCV在C ++中实现poly1d?

时间:2014-05-14 09:14:07

标签: python c++ opencv

我知道polyfit的函数是一个线拟合函数,在Python中返回一个“y = ax + b”行以适合给定的点。

在C ++中,我使用OpenCV函数fitLine,它返回由4个参数((vx,vy,x0,y0)表示的行,其中(vx,vy)是与行共线的归一化向量和(x0,y0)是该行上的一个点。)。

但我无法理解poly1d功能。我无法通过OpenCV和C ++实现它。

如何实施poly1d并使用fitLine函数的返回值?

lineModel = np.poly1d(np.polyfit([y1, y2], [x1, x2], 1))

1 个答案:

答案 0 :(得分:0)

也许这有点偏离所问的问题,但如果您使用的是早期版本的 polyfit,则可以使用 openCV。我将它用于 openCV 2.4.13。它可用于获取任何阶次拟合的系数。请注意,系数以相反的顺序返回。

float xData[] = { 0.0f,1.0f ,2.0f,3.0f  };
float yData[] = { 3.0f, 2.0f, 1.0f, 0.0f, };
int order = 1;

Mat out = Mat(order + 1, 1, CV_32FC1);
Mat x1 = Mat(3, 1, CV_32F, xData);
Mat y2 = Mat(3, 1, CV_32FC1, yData);

polyfit(x1, y2, out, order);