我在做自动卡片检测的计算机视觉项目。我要把卡片和背景分开。我应用了精明的边缘检测,使用了自动参数设置。
结果很好。然而,有时候精明的人并不是这样完美。

我已经用cvFindContour来检测这个盒子。然而,由于上面的“洞”,opencv未能检测到轮廓。
如何调整cvFindContour以检测轮廓,还是应该调整精明的边缘?
发布于 2014-08-05 17:55:22
有多种可能的解决方案。
最简单的办法可能是:
low_threshold重复canny过滤器,直到找到闭合的轮廓为止。如果闭合的轮廓有大致正确的大小和形状,它是一张卡片。哈利斯联系的答案解释了如何检查轮廓是否关闭。另一个相当简单的解决方案是:
FindContours不需要边缘图像,它通常用阈值图像执行。我不知道你的源图像,所以我不能说这会有多好,但你肯定会避免洞的形状问题。
如果源映像不允许这样做,那么以下内容可能会有所帮助:
cv:watershed()生长这两个种子。如果该图像中的背景与卡片的颜色相同,则前两种方法可能工作得不太好。在这种情况下,您最好的选择可能是Micka建议的解决方案:
https://stackoverflow.com/questions/25142987
复制相似问题