第九周--根据卡号识别银行(简单图像处理)
本周进行的是银行卡识别,但是对于这次的学习还是很摸不着头脑。大概只能懂以下几点:
一、图像处理
1.首先是对图片进行处理;提取出其中银行卡号那一部分的图像
2.对这一部分图像进行切割成一个数字为一个图片样本
3.对这些小图片进行检测,验证其字符串
4.将验证的字符串拼接成银行卡号
二、操作
2.1高斯模糊,进行灰度处理,减少噪声
2.2二值化,清理背景
2.3膨胀腐蚀,识别银行卡有文字的区域
2.4定位,根据设定的模型,识别卡号区域
2.5使用cv2.findContours定位区域
2.6提取卡号
2.7分割字符
2.8将分割图片归一统一大小
三、模型建立
3.1数据处理
3.2数据增强
3.3神经网络设计(提取灰度图片的像素值。然后输出值)
详细连接:https://www.bilibili.com/video/BV1U7411i7rm
总结如上,对该模块进行功能添加,识别所属银行:
主要使用两个api:
https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=6225680421001165184&cardBinCheck=true(根据卡号识别银行编码)
https://apimg.alipay.com/combo.png?d=cashier&t=GDB(根据银行编码识别银行)
使用requests读取网页数据,返回我们所需要的格式;使用PyQt5搭建简单界面。
代码如下:
from PyQt5.Qt import * import sys import requests import json r = requests.get(url='https://ccdcapi.alipay.com/validateAndCacheCardInfo.json?cardNo=6225680421001165184&cardBinCheck=true') str=r.content.decode("utf-8")#打印网页字符串 dict1=json.loads(str)#字符串转换为字典 bank=dict1['bank'] card_num=dict1['key']#提取银行及卡号 # print('card_num:',card_num) print('bank:',bank) url='https://apimg.alipay.com/combo.png?d=cashier&t={}'.format(bank) res = requests.get(url)#获取图片 img = QImage.fromData(res.content) app=QApplication(sys.argv)#创建一个程序对象 window=QWidget()#空白的窗口 window.setWindowTitle("获取网页图片")#标题 window.resize(500,500)#窗口大小 la1 = QLabel('卡号:',window) la1.move(100,100) te1 = QTextEdit(window)#可编辑文本 te1.resize(250,30) te1.move(140,95) te1.setText(card_num) la2 = QLabel(window)#QLabel可以显示一个不可编辑的文本或者图片 la2.setPixmap(QPixmap.fromImage(img)) la2.move(160,190) la3 = QLabel('所属银行:',window)#QLabel可以显示一个不可编辑的文本或者图片 la3.move(100,200) window.show()#将窗口显示 sys.exit(app.exec_())#安全退出窗口(保证程序不会退出)