什么相当于opencv2中的'CV_IS_SEQ_CLOSED'?

时间:2013-10-01 23:23:10

标签: opencv computer-vision

我正在将用opencv 1 C API编写的旧程序迁移到带有C ++的opencv2,旧代码使用'CV_IS_SEQ_CLOSED'来检查轮廓是否关闭。我google了很多,但无法找到如何用opencv2做同样的事情。那么有一种解决方法可以做同样的事情吗?

1 个答案:

答案 0 :(得分:1)

不幸的是,cv::findContours()没有提供有关它产生的轮廓的开放或闭合的信息。此外,封闭的轮廓不能保证具有相同的起点和终点。如果您在没有近似的情况下生成轮廓(通过传递CV_CHAIN_APPROX_NONE标志),那么检查轮廓的第一个点和最后一个点之间的距离是否小于sqrt(2)就足够了:

// 1.5 is approximately sqrt(2)
bool closed = cv::norm(contour.front() - contour.back()) < 1.5;

我不认为使用不同的近似方法可以保证这一点。