代码设计
(末尾附文件)
主程序:
clc; %清空命令行
clear all; %清除工作空间所有变量
close all; %关闭所有图形窗口
% ==============开始计时==============================
tic
%=====================读入图片=========================
[fn,pn,fi] = uigetfile('汽车图片\*.jpg','选择图片');%显示检索文件的对话框 fn返回的文件名 pn返回的文件的路径名 fi返回选择的文件类型
I = imread([pn fn]); %读入彩色图像
figure('NumberTitle','off','Name','原始图像');
imshow(I);title('原始图像'); %显示原始图像
%==================加入进度条===========================
waitbar_;
%================图像分割区域(车牌定位)==========================
picture =image_segmentation(I);
threshold=50;
%========================倾斜校正=================
[picture_1,angle] = rando_bianhuan(picture); %倾斜校正 picture 返回校正后的图片 angle 返回倾斜角度
%=========================形态学操作====================
picture_6 = xingtaixue(picture_1);%主要对图像
%=============对图像进一步裁剪,保证边框贴近字体===========
bw = caijian(picture_6);
%=================文字分割 ===================================
image=qiege(bw);
%=================显示分割图像结果================================
bb =zifu_shibie(image);
imshow(picture_1),title (['识别车牌号码:', bb],'Color','r');
%=====================导出文本===========================
fid=fopen('Data.txt','a+');
fprintf(fid,'%s\r\n',bb,datestr(now));
fclose(fid);
%===================读出声音============================
duchushengyin(bb);
% ================读取计时===================================
t= toc;
function duchushengyin(shibiejieguo)
sound(audioread('声音模板\检测结果.wav'),22000);pause(3);
for i=1:7
if shibiejieguo(1,i)=='桂'
sound(audioread('声音模板\桂.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='贵'
sound(audioread('声音模板\贵州.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='京'
sound(audioread('声音模板\京.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='粤'
sound(audioread('声音模板\粤.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='苏'
sound(audioread('声音模板\苏.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='渝'
sound(audioread('声音模板\渝.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='A'
sound(audioread('声音模板\A.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='B'
sound(audioread('声音模板\B.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='C'
sound(audioread('声音模板\C.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='D'
sound(audioread('声音模板\D.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='E'
sound(audioread('声音模板\E.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='F'
sound(audioread('声音模板\F.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='G'
sound(audioread('声音模板\G.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='H'
sound(audioread('声音模板\H.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='J'
sound(audioread('声音模板\J.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='K'
sound(audioread('声音模板\K.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='L'
sound(audioread('声音模板\L.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='M'
sound(audioread('声音模板\M.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='N'
sound(audioread('声音模板\N.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='P'
sound(audioread('声音模板\P.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='Q'
sound(audioread('声音模板\Q.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='R'
sound(audioread('声音模板\R.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='S'
sound(audioread('声音模板\S.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='T'
sound(audioread('声音模板\T.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='U'
sound(audioread('声音模板\U.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='V'
sound(audioread('声音模板\V.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='W'
sound(audioread('声音模板\W.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='X'
sound(audioread('声音模板\X.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='Y'
sound(audioread('声音模板\Y.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='Z'
sound(audioread('声音模板\Z.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='0'
sound(audioread('声音模板\0.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='1'
sound(audioread('声音模板\1.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='2'
sound(audioread('声音模板\2.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='3'
sound(audioread('声音模板\3.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='4'
sound(audioread('声音模板\4.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='5'
sound(audioread('声音模板\5.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='6'
sound(audioread('声音模板\6.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='7'
sound(audioread('声音模板\7.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='8'
sound(audioread('声音模板\8.wav'),22000);pause(1);
elseif shibiejieguo(1,i)=='9'
sound(audioread('声音模板\9.wav'),22000);pause(1);
end
end
sound(audioread('声音模板\车牌检测.wav'),22000);
function image=qiege(bw)
[y,x] = size(bw);
bw(:,x)=1;
bw(:,1)=1;
a = sum(~bw);figure('NumberTitle','off','Name','投影'),bar(a),title('投影');
j = 1;
jj = 1;
m =0;for i = 1:x-1
if a(i)==0&&a(i+1)~=0
j = i;
end
if a(i)~=0&&a(i+1)==0
kk=i;
else
kk =0;
end
if kk~=0
m = m+1;
p(m) = j;
q(m) = kk;
end
end
for i = 1:m
if p(i)<fix(x/8)
p(i)=p(1);
end
end
k =1;
for i = 1:m
if (q(i) - p(i))>(fix(x/10))
gg(k) = q(i);
ggg(k) = p(i);
k = k+1;
end
end
figure('NumberTitle','off','Name','字符分割'),
k =1;
p = zeros(110,55);
image = {p p p p p p p};
for ii = 1:7
p = imresize(bw(:,ggg(ii):gg(ii)), [110 55],'bilinear');
image(ii) = mat2cell(p);
obj = subplot(1,7,ii); imshow(p),title(obj,ii);pause(0.5);
k = k +1;
end
链接:https://pan.baidu.com/s/1g6OJPyEKyMrK6-UaqU-YMg
提取码:wogb