可以将cv :: convexHull应用于双精度点数据

时间:2019-12-11 13:02:45

标签: c++ opencv convex-hull

以下代码可以正常工作:

typedef cv::Point cvp;

    std::vector <cvp> points{ cvp(0, 0), cvp(1, 0), cvp(0, 1), cvp(0.5, 0.5) };
    std::vector<cvp> hullPoints;

    cv::convexHull(points, hullPoints);

但是,当我更改cvp的定义时:

typedef cv::Point2d cvp;  // cvp is now a double-precision point

程序在进入cv::convexHull过程时崩溃。好像 cv::convexHull可能仅被用于整数值点,或者我做错了什么。

我在OpenCV文档中没有发现此问题。

1 个答案:

答案 0 :(得分:3)

convexHull仅与Point2i(与Point相同)和Point2f一起使用。 请参阅code以供参考:

CV_Assert(total >= 0 && (depth == CV_32F || depth == CV_32S));

因此您可以使用浮点值,但它们必须为float,而不是double

typedef cv::Point2f cvp;