【问题标题】:opencv convexHull returns same point twiceopencv convexHull 两次返回相同的点
【发布时间】:2016-06-29 09:25:50
【问题描述】:

我尝试使用 convexHull 来设置我的点的顺序。但结果是错误的。

//image_points_queue.push_back(original_image_points);
vector<cv::Point2f> image_points = {
    { 585, 543 },
    { 643, 749 },
    { 767, 501 },
};

convexHull(image_points, image_points, false);

image_points 变为 "767, 501", "643, 749", "767, 501"。 我对此一无所知。请帮忙。

【问题讨论】:

  • 你能提供一个minimal reproducible example吗?这对我来说按预期工作(没有重复,正确的点)。可能您在代码中执行了其他提供错误结果的操作。
  • 你在 Linux 中运行代码吗?请在下面查看我的评论。在 Windows 中出错了。
  • 我使用的是 Windows 8.1。我不认为它依赖于平台。您可能还有一些其他代码与此 sn-p 相混淆。
  • 实际上这是我为测试运行的唯一代码。我所做的唯一改变是使用另一个向量作为结果。

标签: opencv convex-hull


【解决方案1】:

我使用另一个向量作为结果,代码运行良好。

vector<cv::Point2f> result_points;
vector<cv::Point2f> image_points = {
    { 585, 543 },
    { 643, 749 },
    { 767, 501 },
};

convexHull(image_points, result_points, false);

我使用的是 Windows 10。不确定它是否依赖于平台。

【讨论】:

    【解决方案2】:

    它基本上给出了一个封闭的船体,所以起点和终点是相同的。所以你需要忽略船体的最后一点。

    【讨论】:

      猜你喜欢
      • 2020-04-10
      • 2015-11-09
      • 2016-01-18
      • 1970-01-01
      • 2019-10-09
      • 1970-01-01
      • 1970-01-01
      • 2011-12-14
      • 2012-11-05
      相关资源
      最近更新 更多