|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 helendcany 于 2020-10-10 10:43 编辑 - _- v8 I/ @' @1 j% ^6 {2 w, m
1 d2 c& ^" {4 l
识别蓝色车牌的MATLAB简单程序 " s: N; x5 E9 u; s$ x; j+ U7 u
: P' S8 `6 c }* v& e, W/ c
clear all;close all;clc;[filename,filepath]=uigetfile('.jpg','输入一个需要识别的车牌图像');% 直接自动读入%file=strcat(filepath,filename); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名, Y" T. z1 r4 P7 F4 @4 {3 [
I=imread(file);
& `( O6 \+ a- w7 B- ?figure('name','原图'),imshow(I);title('原图');
% u; t% O) g% `; w3 U2 F. T! V[x,y,z]=size(I);7 A! y4 U- |' V; ^4 j# t D# t
% 以下为找车牌Y方向蓝色的范围
0 _( t, E% o- @Blue_y=zeros(y,1);% zeros(M,N) 表示的是M行*N列的全0矩阵
7 f6 k* y/ M* R; ~ i% u. F' cfor i=1:x
2 Q! ]: U( Q+ l$ n3 t5 V4 ^) Cfor j=1:y 6 ^5 @# S K7 A$ \7 L
if(I(i,j,3)>(I(i,j,1)+I(i,j,2))&&(I(i,j,3)>128))%% 判断蓝色像素 4 a, |$ W) f1 F% E; e
Blue_y(j,1)= Blue_y(j,1)+1;% 蓝色像素点统计 , N' Q& ~9 x, @% I
end $ W- e3 E& s7 v- ^; D/ o% s+ x
end
( q. ?( ?3 X1 q) n; e# K6 M( rend
2 l# w3 O+ s3 n* I2 u; UPY1=1;8 I" g+ G1 V7 i+ [( \8 u
while ((Blue_y(PY1,1)<10)&&(PY1<y))%Y方向是车牌的宽,大于5个蓝色像素点判为有车牌的区域
0 C w' a- O* ?0 QPY1=PY1+1;end %PY1是Y坐标方向蓝色范围的下限
! ?' N: E6 n$ t6 D' DPY2=y;
: i# B2 U! ` p7 G- X; D! Kwhile ((Blue_y(PY2,1)<5)&&(PY2>PY1)) + P! B( Y% d: G u. n2 P% C2 s
PY2=PY2-1;5 d- N: N2 ^( r2 w& E% Y1 k
end %PY2是Y坐标方向蓝色范围的上限
# \! T0 g4 M7 g# I! d: H( ^- m3 ` V% 以下为找车牌X方向蓝色的范围4 d* m0 I8 ~$ K! M/ X( I2 U
Blue_x=zeros(1,x);
" H1 L/ s* \8 ^& z3 z- ?& T& kfor i=1:x
: N. @8 \, W7 S4 w pfor j=1:y % 只需扫描的行
% T: e& p% Z7 \8 ]" h% Xif(I(i,j,3)>(I(i,j,1)+I(i,j,2))&&(I(i,j,3)>128)) %% 判断蓝色像素
" w, A+ \) t2 ]/ {% \0 YBlue_x(1,i)= Blue_x(1,i)+1; % 蓝色像素点统计 1 Y' m ]2 \3 I# K% l
end - f% [' r8 S& Y9 w) ~
end
3 i1 l+ F4 H$ i6 @6 Zend# e' l! O8 \1 | N7 a$ j3 V; B( Q
PX1=1;
8 ?. S$ T& ?. D) R' _4 b ^% jwhile ((Blue_x(1,PX1)<5)&&(PX1<x)) %X方向是车牌的高,大于5个蓝色像素点判为车牌的范围8 g& q: a4 E, ?8 x0 d5 B
PX1=PX1+1;
+ @8 x2 k7 }- c8 g9 z$ Z1 e- fend %PX1是X坐标方向蓝色范围的下限- p/ F1 d* O' U
PX2=x;1 \( ]+ Z$ B$ h/ Q0 ?5 _2 G" w
while ((Blue_x(1,PX2)<3)&&(PX2>PX1))
, _! g! F% h* A8 a PX2=PX2-1;
) S+ M. ^1 s( U& F' ~& C/ v( Fend %PX2是X坐标方向蓝色范围的上限
# S! D0 r8 u/ B) U9 Edw=I(PX1: PX2,PY1: PY2,: );% 裁剪图像9 I2 c7 q" _7 J* |) r6 J1 C
figure('name','定位剪切后的彩色车牌图像');
, _6 {. m0 T/ m8 ^5 j9 h5 Q% D; O$ ^imshow(dw),title('定位剪切后的彩色车牌图像')
9 d9 p/ V: M4 q; N2 b |
|