检测信用卡大小卡片的算法

Sam*_*Tew 6 opencv computer-vision

我想在图像中检测信用卡大小的卡片。该卡可以是任何卡,例如身份证、会员卡。目前,我正在考虑使用 Canny Edge、Hough Line 和 Hough Circle 来检测卡。但当我想结合霍夫线和霍夫圆的所有信息来定位卡片时,这个过程会很繁琐。有人建议使用threshold和findContour,但卡片的颜色可能与背景相似,这使得这种方法很难达到预期的结果。有没有任何内核和方法可以帮助我检测卡?

在此输入图像描述

在此输入图像描述

Gop*_*raj 6

我认为,您的问题与文档扫描仪类似。你可以参考这个链接

  1. 使用 Canny 边缘检测器查找图像中的边缘(下限和上限阈值可设置为 0.66*meanIntensity 和 1.33*meanIntensity)并进行形态学闭合操作。

    执行关闭后的边缘图像

  2. 使用 findContours 查找图像中的轮廓

  3. 过滤掉不需要的轮廓(我使用contourArea来过滤轮廓)

  4. 使用 approxPolyDP 将轮廓近似为 7 个或更多点。(我这里使用0.005 *周长作为参数)

  5. 如果你想找到准确的边缘,请在点之间拟合直线并获得 4 条最大的线。找到它们的交点(因为卡片可能包含也可能不包含弯曲边缘)

  6. 您最终将得到卡片端点,可进一步用于单应性或确定区域。

    卡的顶点

编辑 编辑了答案以包括获取卡片顶点的步骤并更新结果。