MATLAB大作业(3)

2019-06-02 15:27

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); end end

% 分割出第二个字符

[word2,d]=getword(d);%getword的函数与上面类似,字母、数字和文字在一些细节上需要去区分

% 分割出第三个字符 [word3,d]=getword(d); % 分割出第四个字符 [word4,d]=getword(d); % 分割出第五个字符 [word5,d]=getword(d); % 分割出第六个字符

[word6,d]=getword(d); % 分割出第七个字符 [word7,d]=getword(d);

subplot(5,7,1),imshow(word1),title('1'); subplot(5,7,2),imshow(word2),title('2'); subplot(5,7,3),imshow(word3),title('3'); subplot(5,7,4),imshow(word4),title('4'); subplot(5,7,5),imshow(word5),title('5'); subplot(5,7,6),imshow(word6),title('6'); subplot(5,7,7),imshow(word7),title('7'); [m,n]=size(word1);

% 将生成的图片归一化大小为 40*20 word1=imresize(word1,[40 20]); word2=imresize(word2,[40 20]); word3=imresize(word3,[40 20]); word4=imresize(word4,[40 20]); word5=imresize(word5,[40 20]); word6=imresize(word6,[40 20]); word7=imresize(word7,[40 20]);

subplot(5,7,15),imshow(word1),title('1');

subplot(5,7,16),imshow(word2),title('2'); subplot(5,7,17),imshow(word3),title('3'); subplot(5,7,18),imshow(word4),title('4'); subplot(5,7,19),imshow(word5),title('5'); subplot(5,7,20),imshow(word6),title('6'); subplot(5,7,21),imshow(word7),title('7'); imwrite(word1,'1.jpg'); imwrite(word2,'2.jpg'); imwrite(word3,'3.jpg'); imwrite(word4,'4.jpg'); imwrite(word5,'5.jpg'); imwrite(word6,'6.jpg'); imwrite(word7,'7.jpg');

liccode=char(['0':'9' 'A':'Z' '苏豫陕鲁晋']); %建立自动识别字符代码表 SubBw2=zeros(40,20); @*20的零矩阵 l=1; for I=1:7

ii=int2str(I); %int2str整型转换字符串 t=imread([ii,'.jpg']);

SegBw2=imresize(t,[40 20],'nearest'); %改变图片的大小 if l==1 %第一位汉字识别 kmin=37;

kmax=41; %模板中汉字所在的位置 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);

Error(k2)=sum(sum(abs(SegBw2-SamBw2)));

%将现有字符逐个与模板字符相减,认为相减误差最小的现有字符与该模板字符匹配 end

Error1=Error(kmin:kmax); MinError=min(Error1);

findc=find(Error1==MinError);%寻找最匹配的字符

Code(l*2-1)=liccode(findc(1)+kmin-1);%将上述找到的字符位置与liccode中的字符链接上

Code(l*2)=' ';%在字符之间加空格 l=l+1; end

figure(10),imshow(a),title (['车牌号码:', Code],'Color','b');

函数getword

function [word,result]=getword(d) word=[];flag=0;y1=8;y2=0.5; while flag==0 [m,n]=size(d); wide=0;

while sum(d(:,wide+1))~=0 && wide<=n-2 wide=wide+1; end

temp=qiege(imcrop(d,[1 1 wide m])); [m1,n1]=size(temp); if widey2 d(:,[1:wide])=0; if sum(sum(d))~=0

d=qiege(d); % 切割出最小范围 else word=[];flag=1; end else


MATLAB大作业(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:土木工程专业毕业设计(东北农业大学宿舍楼计算书)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: