|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 helendcany 于 2020-10-10 10:43 编辑 & N' A) e9 u; @* w# k! Q
4 d- z8 k" m( j( ]8 T% M识别蓝色车牌的MATLAB简单程序
, w7 f# I# v- n" s3 V; v5 r& ?4 `$ c) Q: W. y4 g( u
clear all;close all;clc;[filename,filepath]=uigetfile('.jpg','输入一个需要识别的车牌图像');% 直接自动读入%file=strcat(filepath,filename); %strcat函数:连接字符串;把filepath的字符串与filename的连接,即路径/文件名
' n; F% V- J A" e7 B. UI=imread(file);8 y0 |; j$ ~& s& L
figure('name','原图'),imshow(I);title('原图');3 O! p' \" ]5 h6 V) s5 F
[x,y,z]=size(I);
0 Z7 V$ p: ?0 O) a% 以下为找车牌Y方向蓝色的范围
1 P+ _0 S# ~" M) T$ i- vBlue_y=zeros(y,1);% zeros(M,N) 表示的是M行*N列的全0矩阵7 e5 ^3 e4 \' Q3 T, G$ B
for i=1:x
! X: W+ y' h' w v% Cfor j=1:y
9 m# I0 }! }% X$ s3 Y- Y4 `if(I(i,j,3)>(I(i,j,1)+I(i,j,2))&&(I(i,j,3)>128))%% 判断蓝色像素 & m7 P6 I+ |: f2 W0 }6 ?5 l
Blue_y(j,1)= Blue_y(j,1)+1;% 蓝色像素点统计
% q- ]* Z. ]* Q/ P9 R2 z. D; o' kend . v+ l0 S8 e9 F
end
& h6 V1 @* L$ Y/ iend
* ]/ \8 f+ y" \; v6 f3 H. ~" FPY1=1;+ s5 N& ?' j! M. F- k+ _
while ((Blue_y(PY1,1)<10)&&(PY1<y))%Y方向是车牌的宽,大于5个蓝色像素点判为有车牌的区域 5 A4 d( S2 e; T! A
PY1=PY1+1;end %PY1是Y坐标方向蓝色范围的下限, @4 H( y- K- D) D
PY2=y;7 G& S: ^0 _2 Q
while ((Blue_y(PY2,1)<5)&&(PY2>PY1))
' n' u: V+ x: RPY2=PY2-1;3 l/ f ]2 ]/ Z y- ?5 \4 i w( [' ^
end %PY2是Y坐标方向蓝色范围的上限
0 F0 z: }6 T0 o% 以下为找车牌X方向蓝色的范围
' P4 u. M& [! I+ V$ E s2 N8 ]2 mBlue_x=zeros(1,x);
4 O& H5 n! B. }* J, s: Ffor i=1:x ; _# p v3 ?8 p8 ^. ?& |
for j=1:y % 只需扫描的行
L: Z& _, f8 {* @5 |: m1 bif(I(i,j,3)>(I(i,j,1)+I(i,j,2))&&(I(i,j,3)>128)) %% 判断蓝色像素 $ K* Q7 I) q! a, C( P' O
Blue_x(1,i)= Blue_x(1,i)+1; % 蓝色像素点统计
& D Z- {. d/ v4 W& o+ zend
3 D" `& {( W, s* y5 J# @end 0 b9 S& r, k, Y) S4 n3 O9 C
end
) c& F' A/ X% R- V/ L/ \ b8 w2 jPX1=1;
- n3 k6 J& V8 w) }! mwhile ((Blue_x(1,PX1)<5)&&(PX1<x)) %X方向是车牌的高,大于5个蓝色像素点判为车牌的范围. A7 b$ I3 _9 k6 i
PX1=PX1+1;
# q0 K1 u, V, X3 L/ O6 dend %PX1是X坐标方向蓝色范围的下限; e% }% |' X( \; Y& u7 I( i$ R5 ~- z
PX2=x;
; n; d. C5 ?0 v! G0 M# J. V% Hwhile ((Blue_x(1,PX2)<3)&&(PX2>PX1))0 _( W& D. {; D
PX2=PX2-1;
% s8 \0 t e- d/ s& i& t. P% H5 i$ Eend %PX2是X坐标方向蓝色范围的上限& i2 J4 j) U5 v
dw=I(PX1: PX2,PY1: PY2,: );% 裁剪图像
) @$ i& [4 ~$ ]( Ufigure('name','定位剪切后的彩色车牌图像');% r. E m: n/ u6 b! ?
imshow(dw),title('定位剪切后的彩色车牌图像')
$ Q# U. p. @5 [) f. { A8 {7 \ |
|