我知道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))
也许这有点偏离问题,但如果您使用的是openCV
的早期版本,则可以使用polyfit
。我用它为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);