笔记:OpenCV进行信用卡数字识别

1. 前言

本文对利用OpenCV进行信用卡数字识别的流程进行复习,也复习一下里面的一些函数的用法,学得快忘得也很快,不复习不写个博客笔记真的很快就忘记了哈哈哈哈。

2. 先做好数字匹配的模板

  • (1)我们的模板是这个样子的数字序列,接下来对一个一个数字做好分割和建立一个字典dict方便做匹配。

  • (2)读入图像并二值化
  • # 导入工具包
    from imutils import contours
    import numpy as np
    import cv2
    
    # 读取一个模板图像
    img = cv2.imread(r'ocr_a_reference.png')
    cv_show('img',img)
    # 灰度图
    ref = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv_show('ref',ref)
    # 二值图像
    #阈值是10,#cv2.THRESH_BINARY_INV  大于阈值部分被置为0,小于部分被置为255
    ref = cv2.threshold(ref, 10, 255, cv2.THRESH_BINARY_INV)[1] #返回值第二个是图像,只取第二个
    cv_show('ref',ref)

  • (3)寻找外轮廓并绘制

    # 计算轮廓
    #cv2.findContours()函数接受的参数为二值图,即黑白的(不是灰度图)
    #,cv2.RETR_EXTERNAL只检测外轮廓,cv2.CHAIN_APPROX_SIMPLE只保留终点坐标(指定保留轮廓的方法)
    #返回的list中每个元素都是图像中的一个轮廓,这个list就是refCnts
    
    ref_, refCnts, hierarchy = cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
    
    #cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)
    #参数分别是3维色彩的原图,轮廓列表,画第几个轮廓,画的颜色(BGR 0,0,225)表示红色画
    #线宽3(如果是-1(cv2.FILLED),则为填充模式),线型
    cv2.drawContours(img,refCnts,-1,(0,0,255),3) #-1就是画全部轮廓
    cv_show('img',img)
    

     

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值