当前位置:首页 > 资讯 > 正文

Opencv项目实战——信用卡数字识别Python代码实现

(1)灰度图、二值图转化

 

结果如图所示:

Opencv项目实战——信用卡数字识别Python代码实现Opencv项目实战——信用卡数字识别Python代码实现

(2)进行轮廓提取接受参数为二值图像,得到数字的信息,RETR_EXTERNAL 就是只是需要外轮廓,cv2.CHAIN_APPROX_SIMPLE只保留终点坐标。 

 

-1:代表所的轮廓,我们这里画出来10个轮廓。(可以用代码验证一下)

 

结果:10

结果如图所示:

Opencv项目实战——信用卡数字识别Python代码实现

 (3)我们需要将轮廓进行大小排序(我们拿到的数据模板不一定向我们前面所展示的从0-9按顺序的,所以我们需要进行排序、resize。

 

 我们调用函数#将轮廓排序,位置从小到大就是数字的信息。然后我们遍历模板,使用cv2.boudingRect获得轮廓的位置,提取位置对应的图片,与数字结合构造成模板字典,dsize = (55, 88),统一大小。

 

 结果如图所示:

Opencv项目实战——信用卡数字识别Python代码实现Opencv项目实战——信用卡数字识别Python代码实现。。。。。。。。。。Opencv项目实战——信用卡数字识别Python代码实现

 二、信用卡图片预处理

(1)进行灰度值

 

(2)形成二值图像,因为要做轮廓检测,解释参数:THRESH_OTSU会自动寻找合适的阈值,适合双峰,需要阈值参数设置为零 二值化

 

结果如图所示:

 Opencv项目实战——信用卡数字识别Python代码实现

 (3) 我们观察一下图片,我们识别图片上的数字但也会存在黄框和红框中的干扰,这时候我们可以想到前面所学到的形态学操作礼帽,闭运算...

Opencv项目实战——信用卡数字识别Python代码实现

 先进行礼帽操作,突出更明亮的区域:

 

结果如图:

Opencv项目实战——信用卡数字识别Python代码实现

(4)我们进行图像的轮廓检测只取外轮廓。在这个图上有不同的区域,我们如何区分呢,我们可以用h的大小进行估计,这个数据根据项目而定

Opencv项目实战——信用卡数字识别Python代码实现

 

 结果如图:

Opencv项目实战——信用卡数字识别Python代码实现

 (5)模板匹配,读出图像。

 

结果如图所示: 

Opencv项目实战——信用卡数字识别Python代码实现Opencv项目实战——信用卡数字识别Python代码实现Opencv项目实战——信用卡数字识别Python代码实现Opencv项目实战——信用卡数字识别Python代码实现

 只是展示一部分(倒序输出)

最新文章