这是示例图像:检测闭合轮廓
和我使用的OpenCV来检测轮廓:
>>> fc = cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
>>> contours = fc[0]
为了检测闭合轮廓我想检查在每个轮廓开始点和结束点由opencv返回,而我注意到,无论对象opencv的形状似乎轮廓每个对象,所以我得到这个结果:
>>> for contour in contours:
>>> print(contour[0,:,:], contour[-1,:,:])
[[246 38]] [[247 38]]
[[92 33]] [[93 33]]
或每个找到的轮廓都有闭合路径。
我在findContour()
函数中搜索了可用方法的附加常量,但它似乎都返回封闭路径。
那么是否有一些检测找到的轮廓是否关闭的一般方法?
我问以前用Google搜索,并没有得到结果,但我看到很好的候选人在右侧类似的问题:How can i know if a contour is open or closed in opencv?它是建议我用cv2.isContourConvex(contour)
,但:
>>> for contour in contours:
>>> print(cv2.isContourConvex(contour))
False
False
另一个更新:contourArea看起来像它可能会提供答案(至少对于简单的轮廓),但我没有在上面的任何其他东西上测试示例图像:
>>> for contour in contours:
>>> print(cv2.contourArea(contour))
0.0
12437.5
我不太清楚,但你尝试使用凸的凸形轮廓'输出(检查)'?像'contourhulled = cv2.convexHull(contour); cv2.isContourConvex(contourhulled)'。 – Jason