基于Python的Opencv 自动识别银行卡卡号系统

一、 摘要
此应用功能为自动识别并获取银行卡卡号,通过导入需要识别的银行卡图片,以及跟银行卡上卡号的数字相一致的数字模型,则可以成功实现识别并获取银行卡卡号的功能。如果你对此感兴趣的话,下面将会详细介绍具体的开发过程。

二、 引言
这是我作为小白学习Python了解的第一个Opencv项目,所以文章多有不足之处,愿可以多多指点,本人虚心求教,也可以一起学习哦!!!!
1)首先代码的环境是基于Anaconda3(Python2.7)+Opencv(python)+Eclipse(pydev),具体的安装过程可以参照参考文献链接里的第一个视频,遇到问题不要着急多查多试一定能解决的。
2)代码的应用意义旨在快速自动、准确、识别、获取卡号信息,取代了以往人工抄写的方式,可以提高卡号信息的获取正确率以及工作的时效。
3)本代码虽然不需要太深入了解Opencv相关知识,但需提前掌握以下知识点的学习
a.图像的基本操作(图像数据的读取、显示、保存、属性打印等等)、截取部分图像数据、颜色通道提取、边界填充、数值计算
b.图像阈值、图像平滑(均值滤波、方框滤波、高斯滤波等等)
c.图像形态学处理(腐蚀操作、膨胀操作、开运算与闭运算、梯度运算、礼帽与黑帽)
d.图像梯度计算方法(Sobel算子、Scharr算子等)
e.边缘检测(Canny边缘检测算法)
f.图像金字塔、轮廓检测(检测、绘制轮廓、轮廓特征、轮廓近似)、模板匹配
g.直方图、傅里叶变换
4)代码功能要求实现:导入图一与图二之后,将得到图三所示数据!
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
三、 代码整体设计思想结构图:
基于Python的Opencv 自动识别银行卡卡号系统
四、 代码+模块分析+结果对应展示
1、模板处理代码部分
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
2、 银行卡图片处理代码

如图三所示,由于初始导入的银行卡片上背景信息复杂,所以先进行预处理以及一些形态学处理之后,则有利于我们进行准确检测我们需要的卡号轮廓信息的工作
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
基于Python的Opencv 自动识别银行卡卡号系统
五、应用使用步骤:
如图四所示,执行代码时需要在.py文件后加( -i images/银行卡图片文件名 -t ocr_a_reference.png),执行即可
基于Python的Opencv 自动识别银行卡卡号系统
六. 总结和展望图
小白一枚,初次尝试,希望自己能继续坚持完成后面一系列的学习,下次能达到自己一开始定下的目标