liccode=char(['0':'9' 'A':'Z' ' 京辽鲁陕苏豫浙 ']);
SubBw2=zeros(40,20);
l=1;
for I=1:7
ii=int2str(I);
t=imread([ii,'.jpg']);
SegBw2=imresize(t,[40 20],'nearest');
SegBw2=double(SegBw2)>20;
if l==1 % 第一位汉字鉴别
kmin=37;
kmax=43;
elseif l==2 % 第二位 A~Z 字母鉴别
kmin=11;
kmax=36;
else l>=3 % 第三位今后是字母或数字鉴别
kmin=1;
kmax=36;
end
for k2=kmin:kmax
fname=strcat('字符模板',liccode(k2),'.jpg'); %把行向量转变为字符串
SamBw2 = imread(fname);
SamBw2=double(SamBw2)>1;
for i=1:40
for j=1:20
SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);
end
end
% 以上相当于两幅图相减获取第三幅图
Dmax=0;
for k1=1:40
for l1=1:20
if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 )
Dmax=Dmax+1;
end
end
end
Error(k2)=Dmax;
end
Error1=Error(kmin:kmax);
MinError=min(Error1);
findc=find(Error1==MinError);
Code(l2-1)=liccode(findc(1)+kmin-1);
Code(l2)=' '; % 输出最大相关图像
l=l+1;
end
figure(10),imshow(dw),title (['车牌号码 :', Code],'Color','r');
liccode(k2)是一个空值
代码中有两处错误,不知道是不是这个引起的,你改试试:
(1) elseif l>=3 % 第三位今后是字母或数字鉴别 %%改成elseif l>=3 或者 else 后面没有l>=3
(2)if ( SubBw2(k1,l1) > 0 | SubBw2(k1,l1) <0 ) %% |改成 ||
程序
fname=strcat('字符模板',liccode(k2),'.jpg'); %把行向量转变为字符串
中的字符模板.jpg图片不存在,题主需要检查自己读取图片的名字有错没
没有获取到文件,加个判断,fname获取有问题。你要判断有没有这个文件,没有就返回