【问题标题】:How to implement poly1d in C++ via OpenCV?如何通过 OpenCV 在 C++ 中实现 poly1d?
【发布时间】:2014-07-02 06:04:41
【问题描述】:

我知道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))

【问题讨论】:

    标签: python c++ opencv


    【解决方案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); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-20
      • 2014-09-23
      • 2016-09-08
      • 2017-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多