第九周--根据卡号识别银行(简单图像处理)

本周进行的是银行卡识别,但是对于这次的学习还是很摸不着头脑。大概只能懂以下几点:

一、图像处理

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_())#安全退出窗口(保证程序不会退出)

 

 

posted @ 2020-04-17 16:17  birdmmxx  阅读(810)  评论(0编辑  收藏  举报