|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
( Y+ _ m2 |0 B, V( U
一、简介
7 Z8 P. }% ]/ ^* @ m+ S1 H1 e本文针对印刷体字符和凹凸字符以及市面上的银行卡号不同数字字体进行识别。
0 M. V! C+ f4 G: e/ C$ P$ Q. M$ }/ }0 w% q1 l+ N/ W
/ H% ~8 n" H1 T* _& J {
1.概述
3 s6 K1 F6 r5 D3 @! }6 r
Q, Q+ o! ]9 a+ Y; k8 ^ w1 w0 M近几年来我国互联网金融飞速发展,网上资金交易逐渐成为日常生活中的主流消费方式。在进行网上资金操作时,往往涉及到对银行卡的操作。在输入银行卡号时,若能通过银行卡图像直接快速准确识别出银行卡号,其在电子支付的便利性、安全性等方面的应用,将会给人们的生活带来更大的便利。今天就给大家展示一下如何使用matlab如何识别银行卡号。/ S7 q- `* q/ W2 f1 z1 p- a U
) n: O5 X+ E0 z' g7 X. g
$ t# [& i& J7 r# k% m# W. m' M/ r8 k
' H) ]$ M) ^3 x5 [% h/ b
. a" e& F7 a" Z# R. A- G二、源代码/ r! C. T! O6 J3 |1 x r
3 i5 E I) T- F$ U( S+ E
- %印刷体识别
- clc;clear;close all;
- addpath('util/');
- addpath('data/');
- inputpath='data/';
- fdir=dir(strcat(inputpath,'*.jpg'));
- p=size(fdir);
- method=2;%定位方法
- levelth=0.3;%水平分割缩放阈值
- for i=2:p(1)
- im=imread(fdir(i).name);
- imtp=imresize(im,0.25);
- %图像灰度化
- if(length(size(im))>1)
- im=double(rgb2gray(im));
- else
- im=double(im);
- end
- im=imresize(im,0.25);
- th=graythresh(im);
- pt=size(im);
- %提取上下位面
- if(method==1)
- im=GuassSmoothfilter(im)*255;%平滑
- cent=2;
- [Labels,BW]=KmeansSg(im,cent);%kmeans聚类
- [pMax,pMin]=Findline(BW);%Hough变换
- downlevel=pMax.y-(pMax.y-pMin.y)*0.30;
- uplevel=pMin.y+(pMax.y-pMin.y)*0.55;
- else
- [pMax,pMin,pxMax,pxMin]=levelSg(im,levelth);%水平集分割
- downlevel=pMax-(pMax-pMin)*0.29;
- uplevel=pMin+(pMax-pMin)*0.55;
- end
- imcrop=im(uplevel:downlevel,:);%定位银行卡号
- po=size(imcrop);
- imtpcrop=zeros(po(1),po(2),3);
- imtpcrop(1:po(1),:,1)=imtp(uplevel:downlevel,:,1);
- imtpcrop(1:po(1),:,2)=imtp(uplevel:downlevel,:,2);
- imtpcrop(1:po(1),:,3)=imtp(uplevel:downlevel,:,3);
- figure;
- imshow(imcrop,[]);title('灰度切割')
- figure;
- imshow(imtpcrop,[]);title('彩色切割')
- srcyuv=rgb2yuv(imtpcrop);%rgb转换为YUV通道
- figure;
- imshow(srcyuv(:,:,2),[]);title('yuv通道')
- edg=edge(srcyuv(:,:,3),'sobel');%canny边缘检测
- figure;
- B=im2bw(uint8(imcrop),0.2);
- imshow(B,[]);title('二值化')
- %[L,num] = bwlabel(~B,4);%获取联通区域
- imwrite(uint8((~B)*255),'x.jpg');
- figure;
- imshow(edg,[]);title('边缘')
- B=uint8((~B)*255);
- cropAll(B)%最终裁剪
- recognize%卡号识别
- end4 b6 ^5 G3 N n& ?% I% f
2 t+ }! C4 L% h5 X; Y3 T3 B: C% D4 ?) `( t; q, a3 j8 u( k" W: i: O: X1 u
|
|