小白理财
财富从此刻开始!

如何定位自己的银行卡(银行卡定位怎样设置)

如何定位自己的银行卡(银行卡定位怎样设置)

文章目录

以上得几期内容我们就把所有得计算机视觉得基础相关处理介绍完了,然后我们这里以几个小项目来继续巩固一下前面得基础知识。其实我们本次博客做的银行卡号识别和车牌识别、快递单号识别等等项目之间都是相通的,所以我们掌握了本节课得相关知识,就相当于把很多项目得思路掌握了!我们开始今天得项目讲解吧。

项目目标:我们导入一张银行卡或者信用卡得图像,通过OpenCV来把它实现出来,把信用卡得数字(卡号)给识别出来。首先我们需要一个数字模板,比如下面这两种,这里对应得项目不同,我们需要得模板也是一定不一样得,那么这个模板有什么用呢?就是说我们要使用OpenCV去识别银行卡上的数字,但是我怎么让计算机认识这些数字啊,是不是得让他学习啊,让计算机通过学习之后,他知道究竟哪个是1,哪个是2。通常的模板都有车牌模板

我们利用学习过的模型去和信用卡上的数字一一匹配,我们就是要做一个这样的事情,然后对于每一次匹配结果我们让计算机给打一次分,比如我们传进来一个图像,他是8,他首先用1去匹配,给出32分,2给出18分,8给出了88分。最高那么我们计算机就认定这个数字为8。然后找到对应模板上的索引(这里进行一下说明,这个模板的数字的型号和样子要和目标一致。)这里我们就需要用到resize这个操作,把提取出来的东西进行resize操作。

1.使用模板匹配方式对模板,以及输入图像进行轮廓检测(检测外轮廓)。2.得到当前轮廓的外接矩形。3.将模板中的外接矩形切割出来。4.使用矩形的长宽比之间的差异使得信用卡的数字矩形框能够被选择出来。5.将其进一步细分,与需要识别的信用卡当中的外接矩形resize成同样的大小。6.使用for循环依次检测。

首先我们要定义一个绘图的函数,这样方便后期的绘图操作。要不然每次出图都要进行相同的操作,比较麻烦。

def cv_show(name,img):\n cv2.imshow(name,img)\n cv2.waitKey(0)\n cv2.destroyAllWindows()\n1234

然后我们导入第三方库和输入参数操作:其中imutils库,它整合了opencv、numpy和matplotlib的相关操作,主要是用来进行图形图像的处理,如图像的平移、旋转、缩放、骨架提取、显示等等,后期又加入了针对视频的处理,如摄像头、本地文件等。imutils同时支持python2和python3。在这里定义了银行卡的类型。

这里我们点击Modify Run Configuration然后指定参数。

在这里进行一个指定,输入-i 然后指定输入图像路径一定要精确到图片,比如123.jpg。然后空格-t 模板的图片。这里有不懂的可以私信问我。

-i C:\\Users\\jzdx\\Desktop\\OpenCV\\xinyongka\\template-matching-ocr\\images\\credit_card_01.png \n-t C:\\Users\\jzdx\\Desktop\\OpenCV\\xinyongka\\template-matching-ocr\\images\\ocr_a_reference.png\n12

在这里的颜色空间转换一共有500多种。

提取出来的模板的轮廓。

再来一个闭操作。**先膨胀再腐蚀!**那么目的是什么呢,我们想让这四块的银行卡号全部都连在一起,然后找到它,提取出来。这就是我的目的。

thresh = cv2.threshold(gradX, 0, 255,\n\tcv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] \n12

这个代码部分要做一下重点讲解,就是他很明显是做一个一个阈值操作,也就是说我们要把图像处理成二值图像,那么我们怎么处理呢?图中不是将阈值设置为0,而是说让计算机自动去识别这个阈值最优是多少!

二值得结果是:

这里就有小伙伴问了,你做的这是啥啊,我们做这些得目的就是要把我们想要的区域拿出来。目前我们发现第一个块和第四块已经连接起来了,中间第二块和第三块还没有连接起来,那么我们再来一次闭运算。

这么多轮廓,那么我要哪个啊,这里就需要我们进行一个过滤得一个操作。这里根据自己的项目自己而定。估计会试几次。

完美!!!这就是我们做银行卡识别小项目得所有内容,我们为了巩固这个知识后期又做了一下车牌识别得和这个操作大致一致。后期我们会进行更新。

赞(0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

理财,财富从此刻开始!