我正在编写 C(不是C++)代码来在矩形轮廓上运行凸包。(大大简化的)代码如下所示:
CvSeq* contours;
CvSeq* hull;
cvFindContours( img, &contours, sizeof(CvContour), CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, CvPoint(0,0) );
hull = cvConvexHull2( contours, storage, CV_CLOCKWISE, 0 );
Whereimg
和contours
都是有效的。这些行之间还有很多内容,但其中的 FindContours 部分已经过测试可以正常工作。
此代码引发异常:错误:cvApproxPoly 中的参数错误(不支持的序列类型)。
有人告诉我,问题是没有设置将序列标识为折线的标志,我已经尝试过这个建议hull->flags = hull->flags | 512
,但可能这些标志在 2008 年到现在之间的某个时间发生了变化,因为这不起作用。
所以问题是:如何在 cvConvexHull2() 的结果上使用 cvApproxPoly()?我应该使用什么数据类型,cvApproxPoly() 的正确参数是什么?