从Canny边缘到轮廓的OpenCV

3
我使用 Canny 边缘检测得到了一条边。我想提取出该边的轮廓。
我查看了以下帖子。 OpenCV 将 Canny 边缘转换为轮廓
但是它没有处理复杂形状。例如,圆与矩形或圆与直线。
cv::findContours() 函数存在两个问题。 1. 对于非闭合边缘返回闭合轮廓,但我想要非闭合轮廓 2. 对于闭合边缘返回 2 个闭合轮廓(也许其中一个轮廓是针对边缘的,另一个是针对边缘内侧的),但我只想要其中的一个。
是否有任何方法可以解决这个问题? 谢谢。
PS:我上传了样本图片。

图片似乎没有展示出你所描述的问题。此外,你并没有真正解释“示例图片”显示了什么。如果你希望得到答案,你需要更具体地说明。 - Michał Gacka
1个回答

4

这完全取决于您在查找轮廓时选择的参数。

在OpenCV中,您可以使用以下方法查找轮廓:

contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

并绘制它们

cv2.drawContours(im, contours, -1, (0, 255, 0), -1) #---set the last parameter to -1

enter image description here


我希望这回答了你的问题。 - Jeru Luke
2
我认为解决方案是使用connectedComponents函数。 - Miki

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接