如何在OpenCV中查找图像轮廓?

4
我需要在图像中找到所有的轮廓。我知道使用findContours()和drawContours(),但是使用Canny边缘检测器时遇到了麻烦。要使用findContours,你需要使用Canny边缘检测或对图像进行阈值处理。但是我不能对图像进行阈值处理,因为这会导致几个边缘被模糊掉(“合并”边缘)。所以我决定使用Canny边缘检测。然而,当我使用它时,我得到的不是完美的边缘,而是各种带有间隙的线条。这使我无法获得良好的轮廓。例如,我得到的不是正方形的边缘,而是四条分隔很小的线段,导致我得到了4个轮廓而不是一个。我尝试了膨胀、开闭运算、高斯模糊和基本上每个形态学操作,但是这些都没有完成任务。有些不能合并线条,而有些则将线条与不相关的线条合并在一起。所以我想知道是否有人有办法从Canny边缘检测中获得实际的轮廓,或者如果没有,是否有其他替代方法可以从图像中获取所有轮廓?

发布示例图片和代码将有助于解决这个问题... - mevatron
这是一个非常典型的问题。调整Canny参数和形态学结构元素通常是解决这个问题的常见方式。 :) - AruniRC
请您把您的评论转化为答案,这样我就可以选择它作为最佳答案了吗? - fdh
1个回答

1

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