首页 > 编程语言 >使用Python配合OpenCV,非常简洁的来识别出银行卡号

使用Python配合OpenCV,非常简洁的来识别出银行卡号

时间:2024-07-12 16:54:52浏览次数:20  
标签:掩膜 img Python 银行卡 imshow cv2 OpenCV 灰度 识别

       Opencv(Open Source Computer Vision Library)是一个基于开源发行的跨平台计算机视觉库。OpenCV用C++语言编写,它具有C ++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS。

本篇是使用python配合opencv来做图片识别,以识别银行卡上的卡号为例。

     安装opencv和辅助的工具库,安装命令如下:win +R   —>cmd—>回车

pip install opencv-python  
pip install numpy
pip install matplotlib

如下图,就是本次实验的对象,我们的目标就是识别,下面的卡号数字:123456789123

思路:图像处理是步骤一般思路是(1) 图像二值化——>(2)使用掩膜去除杂色——>(3)细化被识别的对象——>(4)做识别处理

以本案例为例,上面的思路说人话就是

(1)将彩色图为灰度图,灰度是取值范围是0~255。因为不同颜色的像素点被做成灰度化后,它的灰度的数值是不同。这样就是给定个范围,把这个范围之外的像素点去掉。

         打比方(不是很严谨):比如有一个蓝色方块和一个红色的圆圈,你的目标是识别红色的圆圈,这样二值化后,打个比方红色的灰度是100 ,蓝色的灰度是200.这样给范围要90-120的灰度范围就能去掉蓝色方块,保留红色的圆圈了。

(2)使用一个图层盖住不需要的部分,把不要的部分涂黑。在使用一次二值化把不要的部分进一步去掉。

(3)上面两边已经尽力地把干扰项清除干净了,但是不可能去除到一点干扰都没有的状态,所以这个时候就要细化需要识别的对象,使他从干扰项中凸显出来。提高它被正确识别的可能性。

(4)识别出内容来,这个的方法有很多。本文是识别字符的,所以使用pytesseract这个来工具来进行识别。

完整程序如下:

import cv2
import numpy as np
import pytesseract

if __name__ == '__main__':
    img = cv2.imread("D:/780.jpg", 0)
    # 查询图片的横纵的像素点数量,方便制作掩膜
    print(img.shape)
    # 二值化处理
    t1, dst1 = cv2.threshold(img, 150, 255, cv2.THRESH_BINARY)
    # 创建掩膜
    mask = np.zeros(img.shape, np.uint8)
    # 改变图像的某部分的像素的值
    mask[330:380, 50:330] = 255
    # cv2.imshow("window1", mask)
    # 遮盖遮盖不需要的部分
    dst4 = cv2.bitwise_and(dst1, mask)
    cv2.imshow("window5", dst4)
    # 反二值化处理,去除噪点和掩膜,并突出特征
    t5, dst5 = cv2.threshold(dst4, 127, 255, cv2.THRESH_BINARY_INV)
    kernel = np.ones((3, 3), np.uint8)  # 设定要处理的内核大小
    dst6 = cv2.erode(dst5, kernel, iterations=1)  # 腐蚀图像
    cv2.imshow("window2", img)
    cv2.imshow("window6", dst6)
    # 使用pytesseract识别
    # 指定识别的内容为数字,0~9
    custom_config = r'--oem 3 --psm 6 -c tessedit_char_whitelist=0123456789'
    text = pytesseract.image_to_string(dst6, config=custom_config)
    print(text)
    # cv2.imshow("window3", dst5)
    cv2.waitKey()
    cv2.destroyAllWindows()

D:/780.jpg :这个是图片放置的路径。 

二值化后的图片:

加了掩膜后的图片

反二值化处理并腐蚀后的图片

这样的图片已经算是清楚的了,黑白分明的。虽然有点麻麻赖赖的,实时足够识别了。

识别结果如下:

标签:掩膜,img,Python,银行卡,imshow,cv2,OpenCV,灰度,识别
From: https://blog.csdn.net/m0_66486876/article/details/140297557

相关文章

  • Python-pptx学习随笔
    引言++最近有用到做自动化ppt相关的功能,简单记录一下实现过程的部分操作。++0pptx的结构pptx的存储本质上是一颗树flowchartLRpptx-->slides-->shapes-->组内shapespptx-->幻灯片-->模块形状-->复合形状内部的形状1相关操作1.1创建一个pptx类fr......
  • python 内置高級函數盤點
    1. map(function,iterable,...)map()函数接受一个函数和一个可迭代对象作为参数,将函数应用于可迭代对象的每个元素,并返回一个包含结果的迭代器#将列表中的每个元素加1numbers=[1,2,3,4,5]result=map(lambdax:x+1,numbers)print(list(result))#输出[2,3......
  • 发布用flask框架开发的python后端程序到windows服务器
    flask框架开发的python后端程序开发好了后,怎么发布到生产环境呢?以app.run()的方式在生产环境上启动服务,当有异常特别容易退出,而且性能很弱。生产环境下,python常见的web部署搭配是nginx+gunicorn。但是这种搭配只适合在Linux环境下。gunicorn不支持windows环境。如果要搭......
  • 环境部署之在 Linux 服务器上搭建和部署 Python 环境
    背景说明在企业工作中,自动化测试框架落地肯定会集成到Jenkins服务器上做持续集成测试,自动构建以及发送结果到邮箱,实现真正的无人值守测试。不过Jenkins搭建一般都会部署在公司的服务器上,不会在私人电脑里,而服务器大部分都是Linux操作系统的。如果要在Linux上的Jenkins服......
  • 后劲真大,我愿称之为学习python的“圣经”
    很多小伙伴都在学习Python,但是爱看书的找不到适合自己的,这本书可以完美的解决你的问题,还能帮助到很多需要处理数据,做Excel自动方面的。学习数据分析的好处众多,无论是对于个人职业发展还是企业的运营决策都具有重要意义。以下是学习数据分析的主要好处:提高就业竞争力:在信息化......
  • python模块之configparser
    大家看我前面的笔记中,介绍过了专门用于处理日志的logging模块,下面我们来说一下专门处理配置文件的configparser模块。这个模块其实也没什么难度,说到底还是做文件处理用的,做运维的朋友们可以多研究下。来吧,直接上代码:importconfigparserconfig=configparser.ConfigParser()c......
  • OpenCV一个简单的摄像头调用与关闭
    在使用OpenCV(OpenSourceComputerVisionLibrary)进行摄像头调用与关闭时,通常使用cv2.VideoCapture()函数来调用摄像头,并通过适当的方式关闭它。调用摄像头首先,需要导入OpenCV库(通常简写为cv2),并使用cv2.VideoCapture()函数来启动摄像头。这个函数可以接收一个整数作为参......
  • python中一些特殊方法及含义
    python中一些特殊方法及含义,后期会根据系统学习后修正补充归纳汇总初始化和销毁:__init__(self[,args...])对象初始化,构造函数,在生成对象时调用,简单的调用方法:obj=className(args)初始化方法,在创建对象时进行初始化操作__del__(self)......
  • [1032] SQLAlchemy—the magical bridge between Python and databases!
    Ah,SQLAlchemy—themagicalbridgebetweenPythonanddatabases!......
  • python--实验10 封装,继承,多态
    目录知识点 封装(PART1)继承(PART2)多态(PART3)动态性(PART4)小结知识拓展实验 知识点 封装(PART1)定义:封装是将数据(属性)和行为(方法)组合在一起的过程,通常封装在类中。目的:保护数据不被外部直接访问和修改,提高程序的安全性和可维护性。类和对象:......