logo资料库

基于matlab的识别车牌管理车位的GUI界面设计.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
详情联系 QQ:3422413312 ( 请 备 注在 哪 信 里 看 到 此 息 )
操作流程;1、选择图片(图中按钮),选取入库车牌 2、开始识别(图中按钮) ;3、出库 识别(图中按钮),同时可以查看车牌的预处理操作内容; 代码流程: 入库: 1、图像预处理包括:车牌粗定位、倾斜矫正、二值化、两次形态处理; yt=imread(handles.zhaopianlujing); %yt 为原始图像 axes(handles.show); %显示原图 %显示原图 % axes(handles.axes46); imshow(yt); handles.yt = yt; guidata(hObject,handles); %================================车牌粗定位 =============================== waitbar(0.1); [ydown,yup,xright,xleft]=first_bianjie(yt); %第一张图 if ydown>0
[ydown,yup,xright,xleft,yuzhi]=xiuzheng(ydown,yup,xright,xleft); %车牌区 域根据面积二次修正 Plate = yt(yup:ydown,xleft:xright,:); handles.Plate = Plate; %放入 handles 结构体中,方便在其他回调函数中 调用 第二张图片 guidata(hObject,handles); bw=Plate; %========数学形态学处理====== bw=im2bw(bw,graythresh(bw)); %graythresh 函数找到二值化阈值 erzhihua = bw; handles.erzhihua = erzhihua; guidata(hObject,handles); bw=bwmorph(bw,'open',5); % 执行形态学开操作(先腐蚀后膨胀) %第五张图片,二值化后的图片 bw=bwmorph(bw,'hbreak',inf);% 'hbreak'移除连通的像素 bw=bwmorph(bw,'spur',inf);% 移除刺激(孤立)像素。 bw=bwmorph(bw,'open',5);% 执行形态学开操作(先腐蚀后膨胀) % se=strel('disk',1); % bw=imdilate(bw,se); %开启操作 xingtaixue = bw; handles.xingtaixue = xingtaixue; %第六张图片,第一次形态学处理后的图 片 guidata(hObject,handles); bw=~bw; %转化车牌信息的颜色 %==对图像进一步裁剪,保证边框贴近字体==== bw=touying(bw); waitbar(0.5);
%车牌信息为白色 bw=~bw; diercijiancai = bw; handles.diercijiancai = diercijiancai; %第七张图片,第二次剪裁后的图 片 guidata(hObject,handles); bw = bwareaopen(bw, yuzhi); dierciyichu = bw; handles.dierciyichu = dierciyichu; %移除小对象 %第八张图片,第二次移除小对象后 的图片 guidata(hObject,handles); bw=~bw; %黑字白底 [y,~]=size(bw);%对长宽重新赋值 %==========倾斜校正=========== qingxiejiao=rando_bianhuan(bw); bw=imrotate(bw,qingxiejiao,'bilinear','crop');%取值为负值向右旋转 jiaozhenghou = bw; handles.jiaozhenghou = jiaozhenghou; %第四张图片,车牌倾斜矫正后 的图片 guidata(hObject,handles); waitbar(0.4); 2、车牌精确定位; %==============================车牌精确定位 =============================== bw=rgb_huiduhua(bw); chepaihuidu = bw; handles.chepaihuidu = chepaihuidu; guidata(hObject,handles); %第三张图片 %将车牌彩色图变换为灰度图
3、车牌字符分割; %=========================================字符分割 ============================================ fenge=shuzifenge(bw); waitbar(0.7); %============ 剪裁七个字符=========== han_zi =bw( 1:y,fenge(1):fenge(2)); zi_mu =bw( 1:y,fenge(3):fenge(4)); xuhao_1 =bw( 1:y,fenge(5):fenge(6)); xuhao_2 =bw( 1:y,fenge(7):fenge(8)); xuhao_3 =bw( 1:y,fenge(9):fenge(10)); xuhao_4 =bw( 1:y,fenge(11):fenge(12)); xuhao_5 =bw( 1:y,fenge(13):fenge(14)); 4、字符识别选择 %=====显示分割图像结果======== axes(handles.axes2); imshow(han_zi); axes(handles.axes15); imshow(zi_mu); axes(handles.axes16); imshow(xuhao_1); axes(handles.axes17); imshow(xuhao_2); axes(handles.axes18); imshow(xuhao_3); axes(handles.axes19); imshow(xuhao_4); axes(handles.axes20); imshow(xuhao_5); waitbar(0.8); %==========================================识别 ================================================ %=======将分割后的字符归一化========= guiyihua_hanzi = guiyihua_zimu = [110 70],'bilinear'); guiyihua_xuhao1= imresize(xuhao_1,[110 70],'bilinear'); guiyihua_xuhao2 = imresize(xuhao_2,[110 70],'bilinear'); guiyihua_xuhao3 = imresize(xuhao_3,[110 70],'bilinear'); guiyihua_xuhao4 = imresize(xuhao_4,[110 70],'bilinear'); imresize(han_zi, [110 70],'bilinear'); imresize(zi_mu,
guiyihua_xuhao5 = imresize(xuhao_5,[110 70],'bilinear'); %============ 把 0-9 , A-Z 以及省份简称的数据存储方便访问 ==================== muban_hanzi=guiyihua_muban_hanzi; muban_hanzi = ~muban_hanzi; %因数字和字母比例不同。这里要修改 muban_shuzizimu = guiyihua_muban_szzm; mubna_zimu = guiyihua_muban_zimu; waitbar(0.9); %============================识别结果 ================================ jieguohanzi = shibiehanzi(muban_hanzi,guiyihua_hanzi); shibiejieguo(1) =jieguohanzi; jieguozimu shibiejieguo(i) =jieguozimu; shibiejieguo(i) ='·'; i=i+1; jieguozm_sz_1= shibiezm_sz(muban_shuzizimu,guiyihua_xuhao1); shibiejieguo(i) =jieguozm_sz_1;i=i+1; jieguozm_sz_2= shibiezm_sz(muban_shuzizimu,guiyihua_xuhao2); shibiejieguo(i) =jieguozm_sz_2;i=i+1; jieguozm_sz_3= shibiezm_sz(muban_shuzizimu,guiyihua_xuhao3); shibiejieguo(i) =jieguozm_sz_3;i=i+1; jieguozm_sz_4= shibiezm_sz(muban_shuzizimu,guiyihua_xuhao4); shibiejieguo(i) =jieguozm_sz_4;i=i+1; jieguozm_sz_5= shibiezm_sz(muban_shuzizimu,guiyihua_xuhao5); shibiejieguo(i) =jieguozm_sz_5; = shibiezimu(mubna_zimu,guiyihua_zimu); i=2; i=i+1; handles.shibiejieguo=shibiejieguo; guidata(hObject,handles); set(handles.chepai,'string',shibiejieguo); %显示识别的车牌 即之前的 “车牌信息” 入库:车位减少,之前 100 变成 99; 出库, 识别:(同上) 车位增加恢复到 100;计算停车时间和停车费用;
分享到:
收藏