久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3811|回復: 1
打印 上一主題 下一主題
收起左側

matlab車牌識別代碼 出現錯誤怎么弄?

[復制鏈接]
跳轉到指定樓層
樓主
  1.                                 
  2. function [d]=main(jpg)
  3. close all
  4. clc
  5. I=imread('car1.jpg');
  6. figure(1),imshow(I);title('原圖')
  7. I1=rgb2gray(I);
  8. figure(2),subplot(1,2,1),imshow(I1);title('灰度圖');
  9. figure(2),subplot(1,2,2),imhist(I1);title('灰度圖直方圖');
  10. I2=edge(I1,'roberts',0.15,'both');
  11. figure(3),imshow(I2);title('robert算子邊緣檢測')
  12. se=[1;1;1];
  13. I3=imerode(I2,se);
  14. figure(4),imshow(I3);title('腐蝕后圖像');
  15. se=strel('rectangle',[25,25]);
  16. I4=imclose(I3,se);
  17. figure(5),imshow(I4);title('平滑圖像的輪廓');
  18. I5=bwareaopen(I4,2000);
  19. figure(6),imshow(I5);title('從對象中移除小對象');
  20. [y,x,z]=size(I5);
  21. myI=double(I5);
  22. tic
  23. Blue_y=zeros(y,1);
  24. for i=1:y
  25.     for j=1:x
  26.              if(myI(i,j,1)==1)
  27.   
  28.                 Blue_y(i,1)= Blue_y(i,1)+1;%藍色像素點統計
  29.             end  
  30.      end      
  31. end
  32. [temp MaxY]=max(Blue_y);%Y方向車牌區域確定
  33. PY1=MaxY;
  34. while ((Blue_y(PY1,1)>=5)&&(PY1>1))
  35.         PY1=PY1-1;
  36. end   
  37. PY2=MaxY;
  38. while ((Blue_y(PY2,1)>=5)&&(PY2<y))
  39.         PY2=PY2+1;
  40. end
  41. IY=I(PY1:PY2,:,:);
  42. %%%%%% X方向 %%%%%%%%%
  43. Blue_x=zeros(1,x);%進一步確定x方向的車牌區域
  44. for j=1:x
  45.      for i=PY1:PY2
  46.             if(myI(i,j,1)==1)
  47.                 Blue_x(1,j)= Blue_x(1,j)+1;               
  48.             end  
  49.      end      
  50. end
  51.   
  52. PX1=1;
  53. while ((Blue_x(1,PX1)<3)&&(PX1<x))
  54.        PX1=PX1+1;
  55. end   
  56. PX2=x;
  57. while ((Blue_x(1,PX2)<3)&&(PX2>PX1))
  58.         PX2=PX2-1;
  59. end
  60. PX1=PX1-1;%對車牌區域的校正
  61. PX2=PX2+1;
  62.   dw=I(PY1:PY2-8,PX1:PX2,:);
  63. t=toc;
  64. figure(7),subplot(1,2,1),imshow(IY),title('行方向合理區域');
  65. figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色車牌圖像')
  66. imwrite(dw,'dw.jpg');
  67. [filename,filepath]=uigetfile('dw.jpg','輸入一個定位裁剪后的車牌圖像');
  68. jpg=strcat(filepath,filename);
  69. a=imread('dw.jpg');
  70. b=rgb2gray(a);
  71. imwrite(b,'1.車牌灰度圖像.jpg');
  72. figure(8);subplot(3,2,1),imshow(b),title('1.車牌灰度圖像')
  73. g_max=double(max(max(b)));
  74. g_min=double(min(min(b)));
  75. T=round(g_max-(g_max-g_min)/3); % T 為二值化的閾值
  76. [m,n]=size(b);
  77. d=(double(b)>=T);  % d:二值圖像
  78. imwrite(d,'2.車牌二值圖像.jpg');
  79. figure(8);subplot(3,2,2),imshow(d),title('2.車牌二值圖像')
  80. figure(8),subplot(3,2,3),imshow(d),title('3.均值濾波前')

  81. % 濾波
  82. h=fspecial('average',3);
  83. d=im2bw(round(filter2(h,d)));
  84. imwrite(d,'4.均值濾波后.jpg');
  85. figure(8),subplot(3,2,4),imshow(d),title('4.均值濾波后')

  86. % 某些圖像進行操作
  87. % 膨脹或腐蝕
  88. % se=strel('square',3);  % 使用一個3X3的正方形結果元素對象對創建的圖像進行膨脹
  89. % 'line'/'diamond'/'ball'...
  90. se=eye(2); % eye(n) returns the n-by-n identity matrix 單位矩陣
  91. [m,n]=size(d);
  92. if bwarea(d)/m/n>=0.365
  93.     d=imerode(d,se);
  94. elseif bwarea(d)/m/n<=0.235
  95.     d=imdilate(d,se);
  96. end
  97. imwrite(d,'5.膨脹或腐蝕處理后.jpg');
  98. figure(8),subplot(3,2,5),imshow(d),title('5.膨脹或腐蝕處理后')

  99. % 尋找連續有文字的塊,若長度大于某閾值,則認為該塊有兩個字符組成,需要分割
  100. d=qiege(d);
  101. [m,n]=size(d);
  102. figure,subplot(2,1,1),imshow(d),title(n)
  103. k1=1;k2=1;s=sum(d);j=1;
  104. while j~=n
  105.     while s(j)==0
  106.         j=j+1;
  107.     end
  108.     k1=j;
  109.     while s(j)~=0 && j<=n-1
  110.         j=j+1;
  111.     end
  112.     k2=j-1;
  113.     if k2-k1>=round(n/6.5)
  114.         [val,num]=min(sum(d(:,[k1+5:k2-5])));
  115.         d(:,k1+num+5)=0;  % 分割
  116.     end
  117. end
  118. % 再切割
  119. d=qiege(d);
  120. % 切割出 7 個字符
  121. y1=10;y2=0.25;flag=0;word1=[];
  122. while flag==0
  123.     [m,n]=size(d);
  124.     left=1;wide=0;
  125.     while sum(d(:,wide+1))~=0
  126.         wide=wide+1;
  127.     end
  128.     if wide<y1   % 認為是左側干擾
  129.         d(:,[1:wide])=0;
  130.         d=qiege(d);
  131.     else
  132.         temp=qiege(imcrop(d,[1 1 wide m]));
  133.         [m,n]=size(temp);
  134.         all=sum(sum(temp));
  135.         two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));
  136.         if two_thirds/all>y2
  137.             flag=1;word1=temp;   % WORD 1
  138.         end
  139.         d(:,[1:wide])=0;d=qiege(d);
  140.     end
  141. end
  142. % 分割出第二個字符
  143. [word2,d]=getword(d);
  144. % 分割出第三個字符
  145. [word3,d]=getword(d);
  146. % 分割出第四個字符
  147. [word4,d]=getword(d);
  148. % 分割出第五個字符
  149. [word5,d]=getword(d);
  150. % 分割出第六個字符
  151. [word6,d]=getword(d);
  152. % 分割出第七個字符
  153. [word7,d]=getword(d);
  154. subplot(5,7,1),imshow(word1),title('1');
  155. subplot(5,7,2),imshow(word2),title('2');
  156. subplot(5,7,3),imshow(word3),title('3');
  157. subplot(5,7,4),imshow(word4),title('4');
  158. subplot(5,7,5),imshow(word5),title('5');
  159. subplot(5,7,6),imshow(word6),title('6');
  160. subplot(5,7,7),imshow(word7),title('7');
  161. [m,n]=size(word1);

  162. % 商用系統程序中歸一化大小為 40*20,此處演示
  163. word1=imresize(word1,[40 20]);
  164. word2=imresize(word2,[40 20]);
  165. word3=imresize(word3,[40 20]);
  166. word4=imresize(word4,[40 20]);
  167. word5=imresize(word5,[40 20]);
  168. word6=imresize(word6,[40 20]);
  169. word7=imresize(word7,[40 20]);

  170. subplot(5,7,15),imshow(word1),title('1');
  171. subplot(5,7,16),imshow(word2),title('2');
  172. subplot(5,7,17),imshow(word3),title('3');
  173. subplot(5,7,18),imshow(word4),title('4');
  174. subplot(5,7,19),imshow(word5),title('5');
  175. subplot(5,7,20),imshow(word6),title('6');
  176. subplot(5,7,21),imshow(word7),title('7');
  177. imwrite(word1,'1.jpg');
  178. imwrite(word2,'2.jpg');
  179. imwrite(word3,'3.jpg');
  180. imwrite(word4,'4.jpg');
  181. imwrite(word5,'5.jpg');
  182. imwrite(word6,'6.jpg');
  183. imwrite(word7,'7.jpg');
  184. liccode=char(['0':'9' 'A':'Z' '蘇豫陜魯京遼浙']);  %建立自動識別字符代碼表  
  185. SubBw2=zeros(40,20);
  186. l=1;
  187. for I=1:7
  188.       ii=int2str(I);
  189.      t=imread([ii,'.jpg']);
  190.       SegBw2=imresize(t,[40 20],'nearest');
  191.         if l==1                 %第一位漢字識別
  192.             kmin=37;
  193.             kmax=43;
  194.         elseif l==2             %第二位 A~Z 字母識別
  195.             kmin=11;
  196.             kmax=36;
  197.         else l>=3               %第三位以后是字母或數字識別
  198.             kmin=1;
  199.             kmax=36;
  200.         
  201.         end
  202.         
  203.         for k2=kmin:kmax
  204.             fname=strcat('F:\edge 下載\車牌識別3 第二版\車牌識別\程序與圖像\字符模板\',liccode(k2),'.jpg');
  205.             SamBw2 = imread(fname);
  206.             for  i=1:40
  207.                 for j=1:20
  208.                     SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);
  209.                 end
  210.             end
  211.            % 以上相當于兩幅圖相減得到第三幅圖
  212.             Dmax=0;
  213.             for k1=1:40
  214.                 for l1=1:20
  215.                     if  ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 )
  216.                         Dmax=Dmax+1;
  217.                     end
  218.                 end
  219.             end
  220.             Error(k2)=Dmax;
  221.         end
  222.         Error1=Error(kmin:kmax);
  223.         MinError=min(Error1);
  224.         findc=find(Error1==MinError);
  225.         Code(l*2-1)=liccode(findc(1)+kmin-1);
  226.         Code(l*2)=' ';
  227.         l=l+1;
  228. end
  229. figure(10),imshow(dw),title (['車牌號碼:', Code],'Color','b');

  230. function [word,result]=getword(d)
  231. word=[];flag=0;y1=8;y2=0.5;
  232.     while flag==0
  233.         [m,n]=size(d);
  234.         wide=0;
  235.         while sum(d(:,wide+1))~=0 && wide<=n-2
  236.             wide=wide+1;
  237.         end
  238.         temp=qiege(imcrop(d,[1 1 wide m]));
  239.         [m1,n1]=size(temp);
  240.         if wide<y1 && n1/m1>y2
  241.             d(:,[1:wide])=0;
  242.             if sum(sum(d))~=0
  243.                 d=qiege(d);  % 切割出最小范圍
  244.             else word=[];flag=1;
  245.             end
  246.         else
  247.             word=qiege(imcrop(d,[1 1 wide m]));
  248.             d(:,[1:wide])=0;
  249.             if sum(sum(d))~=0;
  250.                 d=qiege(d);flag=1;
  251.             else d=[];
  252.             end
  253.         end
  254.     end
  255. %end
  256.           result=d;
  257.          
  258.          
  259.           function e=qiege(d)
  260. [m,n]=size(d);
  261. top=1;bottom=m;left=1;right=n;   % init
  262. while sum(d(top,:))==0 && top<=m
  263.     top=top+1;
  264. end
  265. while sum(d(bottom,:))==0 && bottom>=1
  266.     bottom=bottom-1;
  267. end
  268. while sum(d(:,left))==0 && left<=n
  269.     left=left+1;
  270. end
  271. while sum(d(:,right))==0 && right>=1
  272.     right=right-1;
  273. end
  274. dd=right-left;
  275. hh=bottom-top;
  276. e=imcrop(d,[left top dd hh]);
復制代碼


捕獲.PNG (4.43 KB, 下載次數: 102)

出現這樣的錯誤怎么弄??

出現這樣的錯誤怎么弄??
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:198530 發表于 2017-5-11 19:41 | 只看該作者
經過各位大神的知道問題解決了,就是在根目錄下放一張名為car1的圖片就可以了
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 午夜网站视频 | 日日淫 | 亚洲精品久| 久久男人 | 在线免费黄色小视频 | 久久天堂 | 免费成人在线网站 | 亚洲国产精品一区二区三区 | 在线看日韩av | 中文一区二区 | 有码一区 | 国产精品免费在线 | 国产日韩精品一区 | 亚洲成人精品久久 | 亚洲电影专区 | 中文字幕在线一 | 人人人人爽 | 91在线精品一区二区 | 国内精品视频免费观看 | 一区二区三区久久久 | 国产精品亚洲精品日韩已方 | 久久久精品网站 | 亚洲成人一区二区 | 一级毛片在线看 | 久久久精品视 | 天天人人精品 | 日本一区二区影视 | 欧美日韩国产一区二区三区 | 日韩欧美高清dvd碟片 | 国产成人精品a视频一区www | 久久夜视频 | 午夜91 | 成人在线网址 | 欧美性区 | 一区二区国产精品 | 成人在线视频网 | 亚洲第一区久久 | 一区二区三区中文字幕 | 日本中文字幕在线观看 | 91精品久久久久久久 | 日韩久草|