【问题标题】:extract dots from curves从曲线中提取点
【发布时间】:2017-07-12 04:08:48
【问题描述】:

我有一张黑白曲线图片,我想提取代表每条曲线的最小点。点由直线连接。这是我想要的一个例子:

如果我能知道点的优先级,尤其是在并列部分,这很有用。我正在使用 c++ 和 opencv。 我应该使用什么算法来解决这个问题?

【问题讨论】:

    标签: c++ algorithm opencv curves


    【解决方案1】:

    OpenCV 为这个cv::approxPolyDP 提供了漂亮而简单的功能。

    void approxPolyDP(InputArray curve, OutputArray approxCurve, double epsilon, bool closed)
    

    一个简单的例子:

    std::vector<cv::Point> curve;
    //fill curve
    std::vector<cv::Point> approximated_polyline;
    cv::approxPolyDP(Mat(curve), approximated_polyline, 3, false);
    

    【讨论】:

    • 但我没有曲线点。我对我的图片使用了这种方法,它在内存位置给了我异常。
    • 如果您建议一种算法,我将不胜感激。因为我需要对其进行一些修改,所以我需要它自己来编写。
    • 你应用轮廓来获得点曲线。但自相交轮廓对你来说是个问题。
    【解决方案2】:

    关键点检测算法应该会有所帮助。 This page 提供了简短的历史,并为阅读和实验提供了广泛的文献。也可能值得参考this 对局部不变特征检测器的调查。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-05
      • 2021-08-03
      • 2019-03-21
      • 1970-01-01
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多