代码之家  ›  专栏  ›  技术社区  ›  Geoff

如何平滑循环列向量

  •  2
  • Geoff  · 技术社区  · 14 年前

    这是一个OpenCV2问题。

    我有一个矩阵代表 关闭 空间曲线

    cv::Mat_<Point3f> points;
    

    我想平滑它(例如使用高斯核)。

    我尝试过使用:

    cv::Mat_<Point3f> result;
    cv::GaussianBlur(points, result, cv::Size(4 * sigma, 1), sigma, sigma, cv::BORDER_WRAP);
    

    但我得到了错误:

    断言失败(ColumnBorderType!=边界包

    在opencv中卷积循环向量的最佳方法是什么?(“最佳”应考虑空间和时间要求。)

    1 回复  |  直到 14 年前
        1
  •  1
  •   Geoff    14 年前

    我找到了一条路。我重复矩阵,然后模糊,然后提取一个范围。

    GaussianBlur(repeat(points, 3, 1), ret, cv::Size(0,0), sigma); 
    int rows = points.rows;
    result = Mat(result, Range(rows, 2 * rows - 1), Range::all());
    

    这需要额外的工作(和额外的空间?).

    编辑 :我现在手动展开 points 通过复制(包装)内核所需的任意多个点。然后我把多余的分数剪掉。这与上述情况类似,但浪费的空间和时间更少。