【Matlab 030期】【图像识别】银行卡号识别matlab源码
作者:互联网
本文针对印刷体字符和凹凸字符以及市面上的银行卡号不同数字字体进行识别。
1.概述
近几年来我国互联网金融飞速发展,网上资金交易逐渐成为日常生活中的主流消费方式。在进行网上资金操作时,往往涉及到对银行卡的操作。在输入银行卡号时,若能通过银行卡图像直接快速准确识别出银行卡号,其在电子支付的便利性、安全性等方面的应用,将会给人们的生活带来更大的便利。今天就给大家展示一下如何使用matlab如何识别银行卡号。
![在这里插入图片描述](https://www.icode9.com/i/ll/?i=20210102093355446.png?,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1RJUUNtYXRsYWI=,size_16,color_FFFFFF,t_70)
2.结果
附代码:
%印刷体识别
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%卡号识别
end
注:完整代码或者代写添加QQ2449341593
标签:imtpcrop,图像识别,pMin,源码,im,Matlab,po,pMax,downlevel 来源: https://blog.csdn.net/TIQCmatlab/article/details/112093474