OpenCV实现银行卡号识别,字符识别算法你知多少?

随着计算机视觉在我们生活中的应用越来越广泛,大量的字符识别和提取应用逐渐变得越来越受欢迎,同时也便利了我们的生活。像我们生活中的凭借身份码取快递、超市扫码支付的机器等等。字符识别是模式识别的一个重要应用,首先提取待识别字符的特征;然后对提取出来的特征跟字符模板的特征匹配;最后根据准则判定该字符所属的类别。不同的训练方法,不同的特征提取, 不同的匹配规则,就相应的有不同的字符识别方法,基本上很多就是在这些地方做改进,或者是采用新的规则。但是万变不离其宗。1、模板匹配字符识别算法。模板匹配字符识别算法是图像识别中的经典算法之一,该算法的核心思想是:通过比较待识别字符图像的字符特征和标准模板的字符特征,计算两者之间的相似性,相似性最大的标准模板的字符即为待识别的字符。2、神经网络字符识别算法主要思想:通过神经网络学习大量字符样本,从而得到字符的样本特征。当对待识别的字符进行识别时,神经网络就会将待识别字符的特征和之前得到的样本特征匹配,从而识别出字符。3、支持向量机主要思想:同上,都是先得到样本特征,进行训练,然后再分类。SVM应该算是用的最多的分类方法,一般大多适合于二分类问题,在这里就需要使用多分类器来构造。

今天我们就简单的利用OpenCV处理通过提取轮廓和匹配等方式来实现模式匹配的字符识别。

效果图如下:

实验前的准备

首先我们使用的python版本是3.6.5所用到的库有cv2库用来图像处理;

Numpy库用来矩阵运算,这里主要用来对图像像素值相关性处理;imutils库可以轻松实现基本图像处理功能,如平移,旋转,调整大小,骨架化和显示Matplotlib图像。

程序的搭建

1、参考图像的读取和处理:

参考图像如下,因为银行卡号主要只有0~9这几个数字,为了方便识别数字,我们直接利用这张图片里的数值作为匹配样式:

所以下面我们要做的事很明显,就是要将其中每个数字隔开方便后面匹配。

代码如下:

#定义了一个字典 FIRST_NUMBER ,它将第一个数字映射到相应的信用卡类型。

FIRST_NUMBER = {

"3": "American Express",

"4": "Visa",

"5": "MasterCard",

"6": "Discover Card"

}

#参考数字图像,用于匹配

#灰度化及二值化

ref=cv2.imread("1.png")

ref = cv2.cvtColor(ref, cv2.COLOR_BGR2GRAY)

ref = cv2.threshold(ref, 10, 255, cv2.THRESH_BINARY_INV)[1]

#查找轮廓,从左往右排序

refCnts = cv2.findContours(ref.copy, cv2.RETR_EXTERNAL,

cv2.CHAIN_APPROX_SIMPLE)

refCnts = imutils.grab_contours(refCnts)

refCnts = contours.sort_contours(refCnts, method="left-to-right")[0]

digits = {}

#对于其中每一个轮廓进行提循环,i为数字名称,c为轮廓,我们将每个数字0-9(字典键)与第30行的每个roi 图像(字典值)相关联 。

for (i,c) in enumerate(refCnts):

(x,y,w,h)=cv2.boundingRect(c)

roi=ref[y:y+h,x:x+w]

roi=cv2.resize(roi,(57,88))

digits[i]=roi

#初始化几个结构化内核,构造了两个这样的内核 - 一个矩形和一个正方形。我们将使用矩形的一个用于Top-hat形态运算符,将方形一个用于关闭操作。

rectKernel=cv2.getStructuringElement(cv2.MORPH_RECT,(9,3))

sqKernel=cv2.getStructuringElement(cv2.MORPH_RECT,(5,5))

<< · Back Index ·>>

发表回复

相关推荐

专业课《商品学》学生复习资料:专业+知识点+概论,你需要都在这!

考前准备涨一波分就赶紧学起来,下面的内容全是精华。

· 12秒前

歌詞故事 | 《說謊》:假作真時真亦假

我一點都不想你我過得很好真的騙人是小狗汪汪……一首歌,42句歌詞,其中38句謊言,4句真話。本期歌詞故事,林宥嘉,《說謊》(...

· 23秒前

變形金剛5的口碑崩盤,教會瞭我什麼

周末看《變形金剛5》前,老婆給我打瞭預防針:據說是史上最爛的變形金剛。平胸而論,變5還是一部合格的爆米花電影,如果觀眾...

· 37秒前

如何用灰色关联计算指标关联度?

灰色关联法是一种通过研究数据关联性大小,从而反映各因素对目标值的重要程度的研究方法。常与其他方法结合使用确定权重。

· 2分钟前

又拍全裸床戲,她怎麼變成欲女瞭?

提起蒼井優,很多人會聯想到森女。她笑起來很治愈,幹凈、甜美、小清新這樣的詞匯都屬於她。但近幾年,蒼井優好像變瞭很多。...

· 3分钟前