MATLAB身份证号识别

MATLAB身份证号识别

本文将在提取身份证数字区域后通过corr2()函数进一步处理,得到图片所对应身份证号并输出。

将要处理图片

在这里插入图片描述

提取数字区域

clc,clear,close all;
f=imread('id.jpg');
bw=~im2bw(f);

se=strel('line',20,0);
bw_dilate=imdilate(bw,se);


bw_dilate_erode=imerode(bw_dilate,strel('line',200,0));

bw_re=imreconstruct(bw_dilate_erode,bw_dilate);

result=imreconstruct(bw_re,bw);
figure,imshow(result);

结果展示:
在这里插入图片描述

紧接着将数字分割保存 。

[r,c]=find(result);
nextresult=result(min(r) :max(r),min(c):max(c));

[h,w]=size(nextresult);
hs=sum(nextresult);

a=1;b=1;i=1;
splitfs={};points=[];
figure
while(a<w)
    while(hs(a)==0&&a<w)
        a=a+1;
    end
    b=a;
    while(hs(b)>0&&b<w)
        b=b+1;
    end
    
    if(b-a>2)
        hresult=nextresult(:,a:b);
        [r,c]=find(hresult);
        result2=hresult(min(r):max(r),:);
        m=min(r);n=max(r);
        xi=hresult(m:n,:);
        splitfs{i}=xi;
        points=[points;m,n,a,b];
        subplot(3,6,i),imshow(result2);
        i=i+1;
    end
    a=b;
end

自己的数据集

在这里插入图片描述

将图片格式化

picSize=[20,50];

将分割后的图片一一与10个不同数据进行对比,得到一个数组matchrs(n_10)

for m_18=1:size(xs,2)-1
    p=xs{m_18};
    p=imresize(p,picSize);
    for n_10=1:10
        q=imread(strcat('1\',int2str(n_10),'.jpg'));
        q=imresize(q,picSize);
        matchrs(n_10)=corr2(p,q);
    end
    [~,k]=max(matchrs);
    lastresult=strcat(lastresult, fonts(k));
end

在这里插入图片描述

定义一个数组fonts=‘0123456789’;

获得matchrs(n_10)中最大值是第几个,输出对应位置的fonts值,就完成了。

在这里插入图片描述

完整项目代码

链接:https://pan.baidu.com/s/1GrQsJ9vrXXpYb3KQkEQehQ
提取码:86xi

  • 23
    点赞
  • 154
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值