我正在做自动卡检测的计算机视觉项目。 我需要将卡片与背景分开。我已使用此
中的自动参数设置应用了canny边缘检测Automatic calculation of low and high thresholds for the Canny operation in opencv
结果非常好。然而,有时候canny并不像这样完美
我已经应用了cvFindContour来检测这个盒子。但是,由于上侧的“孔”,opencv无法检测到轮廓。
如何调整cvFindContour以检测轮廓或者我应该调整canny边缘?
答案 0 :(得分:12)
有多种可能的解决方案。
最简单的可能是:
low_threshold
的精确过滤器,直到找到闭合轮廓。如果封闭的轮廓具有大致正确的尺寸和形状,则它是卡片。 answer linked by Haris解释了如何检查轮廓是否关闭另一个相当简单的解决方案:
FindContours不需要边缘图像,通常使用阈值图像执行。我不知道你的源图像,所以我不能说它有多好用,但你肯定会避免形状上的洞的问题。
如果源图像不允许这样做,则以下内容可能有所帮助:
cv:watershed()
生长这两个种子。如果该图像中的背景颜色与卡片的颜色相同,则前两种方法可能无法正常工作。在这种情况下,您最好的选择可能是Micka建议的解决方案: