找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

帖子
查看: 4660|回復: 2
打印 上一主題 下一主題
收起左側(cè)

身份證號碼識別MATLAB源程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:334731 發(fā)表于 2018-5-21 17:35 | 只看該作者 |只看大圖 回帖獎勵 |正序瀏覽 |閱讀模式
身份證號碼識別MATLAB設(shè)計源碼分享給大家學習


全部資料51hei下載地址:
身份證號碼識別.rar (912.65 KB, 下載次數(shù): 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
復制代碼


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏4 分享淘帖 頂 踩
回復

使用道具 舉報

板凳
ID:369496 發(fā)表于 2020-2-19 00:37 | 只看該作者
謝謝,還沒有下載希望可以幫到
回復

使用道具 舉報

沙發(fā)
ID:479275 發(fā)表于 2019-12-25 16:03 | 只看該作者
好好學習,天天向上
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表