以下代码可以正常工作:
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文档中没有发现此问题。
答案 0 :(得分:3)
convexHull
仅与Point2i
(与Point
相同)和Point2f
一起使用。
请参阅code以供参考:
CV_Assert(total >= 0 && (depth == CV_32F || depth == CV_32S));
因此您可以使用浮点值,但它们必须为float
,而不是double
:
typedef cv::Point2f cvp;