matlab 车牌定位代码,matlab车牌定位与识别代码,哪位大神能给逐句注释一下

matlab车牌定位与识别代码,哪位大神能给逐句注释一下0

figure(7),subplot(1,2,1),imshow(IY),title('行方向合理区域');

figure(7),subplot(1,2,2),imshow(dw),title('定位剪切后的彩色车牌图像')

imwrite(dw,'dw.jpg');

[filename,filepath]=uigetfile('dw.jpg','输入一个定位裁剪后的车牌图像');

jpg=strcat(filepath,filename);

a=imread('dw.jpg');

b=rgb2gray(a);

imwrite(b,'车牌灰度图像.jpg');

figure(8);imshow(b),

g_max=double(max(max(b)));

g_min=double(min(min(b)));

T=round(g_max-(g_max-g_min)/3);

[m,n]=size(b);

d=(double(b)>=T);

imwrite(d,'车牌二值图像.jpg');

figure(9);imshow(d),title('车牌二值图像')

figure(10),subplot(3,2,3),imshow(d),title('均值滤波前')

h=fspecial('average',3);%创建3x3的均值滤波器

d=im2bw(round(filter2(h,d)));

imwrite(d,'均值滤波后.jpg');

figure(10),subplot(3,2,4),imshow(d),title('均值滤波后')

rotate=0;

e=imread('车牌二值图像.jpg');

bw=edge(e);

[m,n]=size(e);

theta=1:179;

[r,xp]=radon(bw,theta);

i=find(r>0);

[foo,ind]=sort(-r(i));

k=i(ind(1:size(i)));

[y,x]=ind2sub(size(r),k);

[mm,nn]=size(x);

if mm~=0 && nn~=0

j=1;

while mm~=1 && j<180 && nn~=0

i=find(r>j);

[foo,ind]=sort(-r(i));

k=i(ind(1:size(i)));

[y,x]=ind2sub(size(r),k);

[mm,nn]=size(x);

j=j+1;

end

if nn~=0

if x % Enpty matrix: 0-by-1 when x is an enpty array.

x=x;

else % 可能 x 为空值

x=90; % 其实就是不旋转

end

e=imrotate(e,abs(90-x)); % 旋转图像

rotate=1;

end

end

imwrite(e,'Radon 变换旋转后的二值图像.jpg');

figure(11),imshow(e),title('Radon 变换旋转后的二值图像')

pause;

% 某些图像进行操作

% 膨胀或腐蚀

% se=strel('square',3);

se=eye(2); % eye(n) returns the n-by-n identity matrix 单位矩阵

[m,n]=size(d);

if bwarea(d)/m/n>=0.365

d=imerode(d,se);

elseif bwarea(d)/m/n<=0.235

d=imdilate(d,se);

end

imwrite(d,'膨胀或腐蚀处理后.jpg');

figure(12),imshow(d),title('膨胀或腐蚀处理后')

d=qiege(d);

[m,n]=size(d);

figure,subplot(2,1,1),imshow(d),title(n)

k1=1;k2=1;s=sum(d);j=1;

while j~=n

while s(j)==0

j=j+1;

end

k1=j;

while s(j)~=0 && j<=n-1

j=j+1;

end

k2=j-1;

if k2-k1>=round(n/6.5)

[val,num]=min(sum(d(:,[k1+5:k2-5])));

d(:,k1+num+5)=0; % 分割

% 再切割

d=qiege(d);

% 切割出 7 个字符

y1=10;y2=0.25;flag=0;word1=[];

while flag==0

[m,n]=size(d);

left=1;wide=0;

while sum(d(:,wide+1))~=0

wide=wide+1;

end

if wide

d(:,[1:wide])=0;

d=qiege(d);

else

temp=qiege(imcrop(d,[1 1 wide m]));

[m,n]=size(temp);

all=sum(sum(temp));

two_thirds=sum(sum(temp([round(m/3):2*round(m/3)],:)));

if two_thirds/all>y2

flag=1;word1=temp; % WORD 1

end

d(:,[1:wide])=0;d=qiege(d);

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值