opencv项目实战信用卡的检测

第一步先梳理一下我们的项目逻辑:

一. 找素材 (数字模板,银行卡照片等)

二. 识别数字则需要我们对数字模板进行处理。因此下面我们开始处理数字模板。

1.将数字模板处理成灰度图,再进行二值处理.这样图像就变成双通道图.

2.计算模板边缘轮廓.将数字模板每个数字的轮廓计算出来.

3.画出每个数字轮廓的外接矩形。最后将其分别保存到一个字典里.

三. 数字模板处理完成,已经洗净切块备用啦!现在让我们处理正餐-银行卡。

1.和模板一样先进行图像处理.灰度图 —— 二值处理

2.初始化一个(9,3)和(5,5)的卷积核放在旁边备用.

3.将已经处理的银行卡图像进行礼帽操作,去掉多余无用的部分.

4.运用Sobel算子,突出边界.

5.闭操作*1,二值操作 , 接着闭操作*2. 尽量让银行卡上轮廓中充满白色,利于我们下一步的边缘检测,使我们的轮廓检测的更准确.

6.计算轮廓。找出我们银行卡中数字部分呈现的大致比例,与我们计算的轮廓的长宽进行比较。符合条件我们就把它放到一个字典里。不需要则舍弃。

7.这时候我们的轮廓还是四个数字一组。接下来的步骤很明显啦。还是将这些轮廓预处理,接着按照每个数字大致的比例进行分别保存到字典里,进行轮廓检测。

8.将所有数字切成小块备用完成后,就可以将我们的数字轮廓与数字模板进行比较啦。先建一个数组,准备储存比对得分。接下来就是将这个数字轮廓与所有数字模板一个个比对。最后从所有的得分中选取得分最高的那个。

9.最后就是将我们每个数字轮廓的外界矩形画出来最后将数字放在它的头顶上。这样这道菜就做成啦!

你可能感兴趣的:(opencv)