本周进行的是银行卡识别,但是对于这次的学习还是很摸不着头脑。大概只能懂以下几点:
一、图像处理
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_())#安全退出窗口(保证程序不会退出)