学习OpenCV 4:基于Python的算法实战
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

3.5.2 案例29:提取拍照手写签名

生活中,经常遇到需要签名的场景,如果不能亲临现场签名,就需要将文件打印、签名、扫描后发送、再打印。还有一种简单的方式就是签名后传输,将电子签名插入,签名照片如图3.29所示。

插入文档后的图像如图3.30所示。

img

图3.29

img

图3.30

但是,有背景的签名会显得“很突出”,与原文档格格不入,一眼看去就知道不是手签的。仔细分析可以发现,这种签名图片的前景和背景比较单一均匀,如签名的文字的像素值在(23,23,16)附近,而背景的像素值在(161,162,164)附近,因此可以直观地判断前景3个通道的像素值都低于100,而背景的像素值都高于100,对于这种场景,可以简单地通过OpenCV工具对像素值的比较进行前景与背景的分离,将背景改为期望的颜色(如纯白色)。案例代码如下:

去除背景后的结果如图3.31所示。

可以将文字的颜色设置为像素值0,加深笔迹,即在像素遍历时增加如下代码做笔迹修改:

将去除背景并加深笔迹的签名插入文档的结果如图3.32所示。

img

图3.31

img

图3.32

将去除背景的签名插入文档后与原文件完美融合,这种处理方式也可以拓展到给证件照换背景(如将红色背景证件照换为蓝色背景等)。