找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4737|回复: 2
收起左侧

身份证号码识别MATLAB源程序

[复制链接]
ID:334731 发表于 2018-5-21 17:35 | 显示全部楼层 |阅读模式
身份证号码识别MATLAB设计源码分享给大家学习
0.png

全部资料51hei下载地址:
身份证号码识别.rar (912.65 KB, 下载次数: 55)


  1. function [ id_codes,id_bw,code_stats,thresh,iteration ] = id_rec_process( img_gray,model,thresh,training_data_size,iteration )
  2. narginchk(1,5)
  3. if nargin==1
  4.     model=[];
  5. elseif  nargin<=2 || thresh==0
  6.     thresh=.68*graythresh(img_gray);
  7. elseif nargin<=3
  8.     training_data_size=[47 31];
  9. elseif nargin<=4 || isempty(training_data_size)
  10.     iteration=1;
  11. end
  12. % fprintf('Iteration %d, threshold value: %f\n',iteration,thresh)
  13. bw=~im2bw(img_gray,thresh);
  14. bw=imclearborder(bwareaopen(bw,10));
  15. bwc=imdilate(bw,strel('disk',6));
  16. code_stats=regionprops(bwc,'Area');
  17. step_ratio=1.1;
  18. if isempty(code_stats) && thresh*step_ratio<1
  19.     [id_codes,id_bw,code_stats,thresh,iteration]=id_rec_process(img_gray,model,thresh*step_ratio,training_data_size,iteration+1);
  20.     return
  21. end
  22. id_codes=blanks(18);
  23. if isempty(code_stats)
  24.     id_bw=bw;
  25.     return
  26. end
  27. [~,midx]=max([code_stats.Area]);
  28. mask=bwlabel(bwc)==midx;
  29. id_bw=imreconstruct(mask,bw);
  30. code_stats=regionprops(id_bw,'Image','Extent');

  31. if length(code_stats)~=18 && thresh*step_ratio<1
  32.     [id_codes,id_bw,code_stats,thresh,iteration]=id_rec_process(img_gray,model,thresh*step_ratio,training_data_size,iteration+1);
  33.     return
  34. end

  35. if length(code_stats)==18
  36.     inputs=zeros(training_data_size(1)*training_data_size(2),18);
  37.     for i=1:size(inputs,2)
  38.         img=imresize(code_stats(i).Image,training_data_size);
  39.         inputs(:,i)=img(:);
  40.     end
  41.    
  42.     % predict
  43.     if ~isempty(model)
  44.         try
  45.             output=model(inputs);
  46.             [~,midx]=max(output);
  47.             count=size(output,2);
  48.             for i=1:count
  49.                 switch midx(i)
  50.                     case 1
  51.                         id_codes(i)='X';
  52.                     otherwise
  53.                         id_codes(i)=num2str(11-midx(i));
  54.                 end
  55.             end
  56.         catch e
  57.             disp(e)
  58.             for i=1:length(e.stack)
  59.                 disp(e.stack(i))
  60.             end
  61.         end
  62.     end
  63. end
  64. end
复制代码


回复

使用道具 举报

ID:479275 发表于 2019-12-25 16:03 | 显示全部楼层
好好学习,天天向上
回复

使用道具 举报

ID:369496 发表于 2020-2-19 00:37 | 显示全部楼层
谢谢,还没有下载希望可以帮到
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表