opencv信用卡卡号识别

2023-10-28 14:10
文章标签 opencv 识别 信用卡 卡号

本文主要是介绍opencv信用卡卡号识别,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.程序预处理

在正式进行卡号识别编写程序时,我们首先需要知道我们需要使用到的函数。
我们需要用到图像的二值化处理,轮廓筛选,形态学变化,数字截取与排序。
**二值化处理:**图像的二值化类型分为全局阈值和自适应阈值,这里我们用到的时自适应阈值,全局阈值无法得到我们想要的效果。

adapt=cv2.adaptiveThreshold(src,maxVal,adaptiveMethod,type,blockSize,c)

上面为自定义阈值的模板,第一个参数时图片,阈值的最大值,自适应阈值,处理类型,后面是两个常数。
下面的代码如下:

# -*- coding =utf-8 -*-
# @Time :2022/7/1 8:51
# @Author :CHINA
# @File :卡号识别.py
# @software:PyCharm
import cv2
import numpy as np
card_gray=cv2.imread("F:\\7.1\\card .jpg",cv2.IMREAD_GRAYSCALE)
card_gray4=cv2.resize(card_gray,(2*card_gray.shape[1],2*card_gray.shape[0]))
adapt=cv2.adaptiveThreshold(card_gray4,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY_INV,13,3)
con,hiera=cv2.findContours(adapt,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for i in range(len(con)):if cv2.contourArea(con[i])<160:adapt=cv2.drawContours(adapt,con,i,(0,0,0),-1)
ker=np.ones((15,15),dtype=np.uint8)
blackhat=cv2.morphologyEx(adapt,cv2.MORPH_BLACKHAT,ker)ker=np.ones((3,3),dtype=np.uint8)
opening=cv2.morphologyEx(blackhat,cv2.MORPH_OPEN,ker)
con,hiera=cv2.findContours(opening,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for i in range(len(con)):x,y,w,h=cv2.boundingRect(con[i])ratio=float(w)/hArea=w*hif Area<1800 or Area>6000:opening = cv2.drawContours(opening, con, i, (0, 0, 0), -1)else:if ratio>0.7 or ratio<0.57:opening = cv2.drawContours(opening, con, i, (0, 0, 0), -1)
cv2.imshow("adapt4",opening)
ker=np.ones((3,3),dtype=np.uint8)
opening=cv2.morphologyEx(opening,cv2.MORPH_DILATE,ker)
cv2.imshow("adapt5",opening)
model=cv2.imread("F:\\7.1\\model.jpg",cv2.IMREAD_GRAYSCALE)
ret,model=cv2.threshold(model,200,255,cv2.THRESH_BINARY)
cv2.imshow("adapt6",model)
def squence(image,width,height):con, hiera = cv2.findContours(image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)n=len(con)Reactbox0=np.ones((n,4),dtype=int)for i in range(n):Reactbox0[i]=cv2.boundingRect(con[i])Reactbox= np.ones((n, 4), dtype=int)for i in range (n):p=0for j in range(n):if Reactbox0[i][0]>Reactbox0[j][0]:p=p+1Reactbox[p]=Reactbox0[i]Imgbox=[[]for i in range (n)]for i in range (n):x,y,w,h=Reactbox[i]ROI=image[y:y+h,x:x+w]ROI = cv2.resize(ROI,(width,height))thresh,ROI=cv2.threshold(ROI,200,255,cv2.THRESH_BINARY)Imgbox[i]=ROIreturn Reactbox,Imgbox
Reactbox_Temp,Imgbox_Temp=squence(model,50,80)
print(Reactbox_Temp)
cv2.imshow("adapt7",Imgbox_Temp[1])
Reactbox,Imgbox=squence(opening,50,80)
for i in range (len(Imgbox)):score=np.zeros(len(Imgbox_Temp),dtype=int)for j in range(len(Imgbox_Temp)):score[j]=cv2.matchTemplate(Imgbox[i],Imgbox_Temp[j],cv2.TM_SQDIFF)min_val,max_val,min_indx,max_indx=cv2.minMaxLoc(score)print(min_indx[1])
cv2.waitKey(0)

在这里插入图片描述
这是运行后的结果。

这篇关于opencv信用卡卡号识别的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/293738

相关文章

Python如何将OpenCV摄像头视频流通过浏览器播放

《Python如何将OpenCV摄像头视频流通过浏览器播放》:本文主要介绍Python如何将OpenCV摄像头视频流通过浏览器播放的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完... 目录方法1:使用Flask + MJPEG流实现代码使用方法优点缺点方法2:使用WebSocket传输视

Python中图片与PDF识别文本(OCR)的全面指南

《Python中图片与PDF识别文本(OCR)的全面指南》在数据爆炸时代,80%的企业数据以非结构化形式存在,其中PDF和图像是最主要的载体,本文将深入探索Python中OCR技术如何将这些数字纸张转... 目录一、OCR技术核心原理二、python图像识别四大工具库1. Pytesseract - 经典O

使用Python和OpenCV库实现实时颜色识别系统

《使用Python和OpenCV库实现实时颜色识别系统》:本文主要介绍使用Python和OpenCV库实现的实时颜色识别系统,这个系统能够通过摄像头捕捉视频流,并在视频中指定区域内识别主要颜色(红... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间详解

OpenCV实现实时颜色检测的示例

《OpenCV实现实时颜色检测的示例》本文主要介绍了OpenCV实现实时颜色检测的示例,通过HSV色彩空间转换和色调范围判断实现红黄绿蓝颜色检测,包含视频捕捉、区域标记、颜色分析等功能,具有一定的参考... 目录一、引言二、系统概述三、代码解析1. 导入库2. 颜色识别函数3. 主程序循环四、HSV色彩空间

Python基于微信OCR引擎实现高效图片文字识别

《Python基于微信OCR引擎实现高效图片文字识别》这篇文章主要为大家详细介绍了一款基于微信OCR引擎的图片文字识别桌面应用开发全过程,可以实现从图片拖拽识别到文字提取,感兴趣的小伙伴可以跟随小编一... 目录一、项目概述1.1 开发背景1.2 技术选型1.3 核心优势二、功能详解2.1 核心功能模块2.

Python验证码识别方式(使用pytesseract库)

《Python验证码识别方式(使用pytesseract库)》:本文主要介绍Python验证码识别方式(使用pytesseract库),具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录1、安装Tesseract-OCR2、在python中使用3、本地图片识别4、结合playwrigh

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++中OpenCV 矩阵运算的实现

《C/C++中OpenCV矩阵运算的实现》本文主要介绍了C/C++中OpenCV矩阵运算的实现,包括基本算术运算(标量与矩阵)、矩阵乘法、转置、逆矩阵、行列式、迹、范数等操作,感兴趣的可以了解一下... 目录矩阵的创建与初始化创建矩阵访问矩阵元素基本的算术运算 ➕➖✖️➗矩阵与标量运算矩阵与矩阵运算 (逐元

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

C/C++和OpenCV实现调用摄像头

《C/C++和OpenCV实现调用摄像头》本文主要介绍了C/C++和OpenCV实现调用摄像头,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录准备工作1. 打开摄像头2. 读取视频帧3. 显示视频帧4. 释放资源5. 获取和设置摄像头属性