Python 如何在C+中实现poly1d+;通过OpenCV?
我知道Python 如何在C+中实现poly1d+;通过OpenCV?,python,c++,opencv,Python,C++,Opencv,我知道polyfit的函数是一个直线拟合函数,在Python中,它返回一条“y=ax+b”直线来拟合给定的点 在C++中,我使用OpenCV函数 FITLION/CODE>,它返回由4个参数((x,y,x0,y0)表示的线,其中(vx,y)是与线共线的归一化向量,(x0,y0)是线上的点)。 但是我不能理解poly1d函数。我不能用OpenCV和C++实现它。 如何实现poly1d并使用fitLine函数的返回值 lineModel = np.poly1d(np.polyfit([y1, y2]
polyfit
的函数是一个直线拟合函数,在Python中,它返回一条“y=ax+b”直线来拟合给定的点
在C++中,我使用OpenCV函数<代码> FITLION/CODE>,它返回由4个参数((x,y,x0,y0)表示的线,其中(vx,y)是与线共线的归一化向量,(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);