⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 findtext.m

📁 Demo for License plate recognition
💻 M
字号:
function find(filename,net1,net2)
v=not(imread(filename));
imshow(v);
drawnow;
[n,m]=size(v);
%pause;
x=round(n*2/3);
y=round(m*0.9);
x0=n;
y0=m;
for x0=n:-1:x+2,
    s=sum(v(x0,y0-y:y0));    
    if (s>y*0.1+0.1)&&(s<y*0.8+0.8)&&(sum(sum(v(x0-x:x0,y0-y:y0)))>x*y*0.1),
           break;                
    end         
end

for y0=m:-1:y+2,
    s=sum(v(x0-x:x0,y0));
    if (s>x*0.1+0.1)&&(s<x*0.8+0.8)&&(sum(sum(v(x0-x:x0,y0-y:y0)))>x*y*0.2),
          break;                    
    end         
end

v=(v(x0-x:x0,y0-y:y0));

[n,m]=size(v);
while (sum(v(1,:))<m/5)&&(n>2),
    v=v(2:n,1:m);
    [n,m]=size(v);
end

while (sum(v(:,1))<n/5)&&(m>2),
    v=v(1:n,2:m);
    [n,m]=size(v);
end

while (sum(v(n,:))<m/5)&&(n>2),
    v=v(1:n-1,1:m);
    [n,m]=size(v);
end

while (sum(v(:,m))<n/5)&&(m>2),
    v=v(1:n,1:m-1);
    [n,m]=size(v);
end

v= bwareaopen(v,190);
[BW_filled,L] = imfill(v,'holes');
boundaries = bwboundaries(BW_filled);
tongso=0;

tren=[];
duoi=[];

for k=1:length(boundaries),   
   b = boundaries{k};
   minx=min(b(:,2));maxx=max(b(:,2));
   miny=min(b(:,1));maxy=max(b(:,1));
   dai=maxy-miny;   
   rong=maxx-minx; 
   
    if (dai>n*0.43)&&(rong<m/6),
           
    %plot(b(:,2),b(:,1),'g','LineWidth',3);
    tongso=tongso+1;
    tren=[tren,miny];
    duoi=[duoi,maxy];   
   end
end 

if (tongso<6)&&(tongso>0),
 
 v = imrotate(v,-6,'bilinear','loose');
 [n,m]=size(v);
 
 miny=round(sum(tren)/tongso);
 maxy=max(duoi);
  
 if maxy<n,
   v(maxy-5:maxy,:)=0;
 end
end

v= bwareaopen(v,490); 
%imshow(v);

[n,m]=size(v);
%hold on;
[BW_filled,L] = imfill(v,'holes');
boundaries = bwboundaries(BW_filled);

ok=[];kq=[];
for k=1:length(boundaries),   
   b = boundaries{k};
   minx=min(b(:,2));maxx=max(b(:,2));
   miny=min(b(:,1));maxy=max(b(:,1));
   dai=maxy-miny;
   rong=maxx-minx;    
   if (dai>n*0.43)&&(rong<m/6),       
    %pause;  
    %plot(b(:,2),b(:,1),'g','LineWidth',3);
    ok=[ok,k];
    
    %taodl(v(miny:maxy,minx:maxx));
   end  
end
tongso=length(ok);
if tongso>6,
   b = boundaries{ok(1)};
   minx1=min(b(:,2));maxx1=max(b(:,2));
   miny1=min(b(:,1));maxy1=max(b(:,1));    
   
   b = boundaries{ok(2)};
   minx2=min(b(:,2));maxx2=max(b(:,2));
   miny2=min(b(:,1));maxy2=max(b(:,1));
   
   if (maxx2-maxx1)>max((maxx1-minx1),(maxx2-minx2))*2,
       
    ds=nnn(v(miny1:maxy1,minx1:maxx1),net2,1);  
    kq=[kq,ds];tongso=2;
   else
     ds=nnn(v(miny2:maxy2,minx2:maxx2),net2,1);    
     kq=[kq,ds];tongso=3;
   end   
 else
   b = boundaries{ok(1)};
   minx=min(b(:,2));maxx=max(b(:,2));
   miny=min(b(:,1));maxy=max(b(:,1));
   ds=nnn(v(miny:maxy,minx:maxx),net2,1);
   kq=[kq,ds];tongso=2;
end

for i=tongso:tongso+4,
    if i<=length(ok),
       b = boundaries{ok(i)};
       minx=min(b(:,2));maxx=max(b(:,2));
       miny=min(b(:,1));maxy=max(b(:,1));
       ds1=nnn(v(miny:maxy,minx:maxx),net1,0);
       kq=[kq,ds1];       
    end
end
kq

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -