`

银行卡号识别(二) --- 再预处理

 
阅读更多



 上回书说道,我们对银行卡进行了一系列的预处理后,得到了下面的结果:
        
 

银行卡下半部分严重影响到了检测的效果,所以在进行机器学习前,我们还需要做一点处理,把下半部分的噪声给消除掉。

思路:首先,针对农行卡颜色的特点(目前暂时只讨论农行卡)上半部分颜色相对较浅,下半部分颜色较深,而银行卡号属深色,所以往往会出现上图所示的---下半部分大面积噪声,上半部分可能没有或者有细微的少量噪声的现象,故该图具有一定的普遍性。
           
 

 

如上图所示,实际上有效的检测区域就是上图红线之间的数字部分,其余部分均无效,于是乎,我们可以这样实现:

遍历整张二值图,统计每行的有效像素(黑色),若该行有效像素个数高于阈值则表示该行开始是有效区域,若该行有效像素个数低于阈值则表示该行无图像或者是噪声;检测到有效区域后开始,即找到了上面那条红线后,我们开始找下面那条红线的位置,若该行有效像素个数低于阈值,则表示检测到了无效区域,即检测到了下面的红线------如此一来我们便得到了有效区域的高度,我们将所有的无效区域清除即可。

关键代码实现:

IplImage *Filter(IplImage*imgSrc)

{//过滤图像

int a = 0, b = 0;//保存有效行号

int state = 0;//标志位,0则表示还未到有效行,1则表示到了有效行,2表示搜寻完毕

for (int y = 0; y < imgSrc->height; y++)

{

int count = 0;

for (int x = 0; x < imgSrc->width; x++)

{

if (cvGet2D(imgSrc, y, x).val[0] == 0)

count = count + 1;

}

if (state == 0)//还未到有效行

{

if (count >= 10)//找到了有效行

{//有效行允许十个像素点的噪声

a = y;

state = 1;

}

}

else if (state == 1)

{

if (count <= 10)//找到了有效行

{//有效行允许十个像素点的噪声

b = y;

state = 2;

}

}

}

for (int y = 0; y < imgSrc->height; y++)

{

if(y >= a && y <= b)

continue;

for (int x = 0; x < imgSrc->width; x++)

{

((uchar *)(imgSrc->imageData + y*imgSrc->widthStep))[x] = 255;

}

}

return imgSrc;

}

 

结果:

 

 

预处理到此完毕

 

 

机器学习下回分解。

<!--EndFragment-->
  • 大小: 32.9 KB
  • 大小: 32 KB
  • 大小: 20.9 KB
1
1
分享到:
评论

相关推荐

    银行卡扫描识别卡号demo

    这个"银行卡扫描识别卡号demo"是实现这一功能的一个实例,它能够有效地帮助用户自动提取银行卡上的卡号信息,极大地提高了输入的效率和准确性。 首先,该技术基于图像处理和机器学习算法。在描述中提到,无论是平的...

    银行卡号识别

    在实际应用中,用户可能通过拍摄或扫描银行卡来获取卡号,这时就需要对图片进行预处理,包括灰度化、二值化、噪声去除等步骤,以便于后续的特征提取。然后,通过OCR(Optical Character Recognition,光学字符识别)...

    基于深度学习的银行卡号识别系统

    《基于深度学习的银行卡号识别系统详解》 在数字化时代,自动识别银行卡号已经成为金融、电商等领域的核心技术之一。本文将深入探讨一个基于深度学习的银行卡号识别系统,该系统运用了卷积神经网络(CNN)技术,并...

    基于OpenCV&Tesseract;-OCR实现银行卡号识别

    **基于OpenCV&Tesseract的OCR银行卡号识别技术详解** 在当今数字化时代,自动识别银行卡号的需求日益增长,尤其是在金融支付、银行服务自动化等场景中。本文将深入探讨如何结合OpenCV图像处理库与Tesseract OCR...

    通过银行卡号识别银行卡名称

    为了提高识别速度,`bankcard.js` 可能会采用预处理的策略,如将银行卡号规则和对应银行的映射关系缓存到内存中,减少不必要的网络请求。 总之,"通过银行卡号识别银行卡名称"的功能是通过`bankcard.js`库实现的,...

    QT+opencv+OCR 身份证号码,银行卡号识别

    QT+OpenCV+OCR 身份证号码与银行卡号识别技术是计算机视觉领域的一个重要应用,主要用于自动识别图像中的文字信息。在这个特定的项目中,我们看到一个利用QT图形界面库,OpenCV图像处理库,以及OCR(Optical ...

    扫描银行卡识别卡号的demo

    【扫描银行卡识别卡号的Demo】是一个用于演示如何利用技术手段自动识别并提取银行卡号的应用程序。这个Demo展示了先进的图像处理和光学字符识别(OCR)技术在金融领域的实际应用,帮助用户快速、准确地获取银行卡上...

    银行卡号识别Demo(windows程序)

    1. **图像预处理**:首先,程序会对拍摄的银行卡照片进行预处理,包括灰度化、二值化、去噪等步骤,以提高后续识别的准确性和效率。 2. **卡号定位**:利用图像处理技术,如边缘检测、轮廓提取和模板匹配,来定位...

    基于深度学习的银行卡号识别研究与应用.pdf

    在传统的光学识别技术中,为保证银行卡号的识别准确性,一般需要对图像进行预处理,例如灰度化、二值化、边缘检测、轮廓提取以及归一化等操作。然而,这些预处理手段往往局限于图像质量,对于图像中的噪声、光照不均...

    银行卡卡号识别

    MATLAB提供了丰富的图像处理工具箱,包括图像读取、调整亮度和对比度、去噪(如使用高斯滤波或中值滤波)、二值化(如Otsu's方法)等,这些都是为了提高银行卡号区域的识别率。预处理的目的是消除干扰因素,使卡号...

    银行卡号码识别微信小程序bank_recogination-master.zip

    1. 图像预处理:在识别银行卡号之前,首先需要对拍摄的银行卡图片进行预处理,包括灰度化、二值化、去噪、倾斜校正等步骤,以便突出银行卡号码区域,降低后续识别的难度。 2. 特征提取:使用如边缘检测(Canny算法...

    基于深度学习的银行卡卡号识别系统

    在银行卡识别场景中,YOLO首先会检测出图像中的银行卡区域,通过预先训练的模型,能够在单次前向传播过程中同时预测出图像中的多个物体并定位它们。对于银行卡这种相对规则的形状,YOLO能够准确地框选出卡片的边界,...

    分享项目:识别银行卡号(Python-opencv)

    在识别银行卡号之前,我们需要对图片进行一系列预处理步骤,包括灰度化、二值化和噪声消除。灰度化是将彩色图像转换为单色图像,减少计算复杂性;二值化则是将图像转化为黑白色,便于后续处理;噪声消除可以使用中值...

    opencv实战 - 银行卡数字识别项目

    在本项目"opencv实战 - 银行卡数字识别项目"中,我们将深入探讨如何使用OpenCV库,一个强大的开源计算机视觉库,来处理图像并识别银行卡上的数字。这个项目的核心在于利用Python编程语言和PyCharm开发环境,将OpenCV...

    基于深度学习的银行卡号识别系统.pdf

    基于深度学习的银行卡号识别系统是一项涉及图像处理、机器学习、特别是深度学习技术的综合性技术应用。该系统的目的在于提升用户在移动支付平台绑定银行卡时的效率和准确性,避免了手动输入银行卡号的繁琐与错误率,...

    基于OpenCV的银行卡号识别算法研究.pdf

    银行卡号识别主要涉及以下几个步骤:图像预处理、卡号定位、噪声去除、二值化以及数字识别。 在图像预处理阶段,常用的灰度化处理可以将彩色图像转换为灰度图像,以减少数据量和计算复杂度。灰度化处理可以通过分量...

    Python银行卡卡号自动识别源程序,GUI前端,基于PyQt5+opencv

    Python银行卡卡号自动识别系统是一种高效且便捷的工具,它结合了PyQt5图形用户界面(GUI)框架和OpenCV图像处理库,用于自动化提取银行卡上的卡号信息。以下是对这个系统的详细介绍: **1. 银行卡卡号识别原理** ...

    基于OpenCV的银行卡号识别算法研究.zip

    二、银行卡号识别步骤 1. 图像预处理:首先,我们需要对银行卡图像进行预处理,包括灰度化、二值化、噪声去除等操作。这些步骤可以增强图像的对比度,使银行卡号更易于识别。 2. 直线检测与校正:银行卡通常呈矩形...

    基于OpenCV与模版匹配 实现信用卡、银行卡号识别

    本文将深入探讨如何利用OpenCV和模板匹配技术来实现信用卡和银行卡号的自动识别。模板匹配是图像处理中一种常用的技术,通过在大图中寻找小图的最相似区域,以达到识别目的。 首先,我们要理解模板匹配的基本原理。...

    Python基于Opencv&Yolov7的银行卡识别系统

    在银行卡识别系统中,OCR将用于识别卡片上的数字和字母,从而提取出银行卡号等重要信息。为了提高OCR的准确性,可能还需要对识别区域进行进一步的预处理,例如二值化、噪声消除等。 总的来说,这个Python基于OpenCV...

Global site tag (gtag.js) - Google Analytics