锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

matlab车牌识别例子(好好看看提取字符部分)

时间:2023-06-20 06:37:00 j6d系列矩形电连接器j6w

1、图像分割、边缘检测(车牌识别)示例 Matlab代码% function d=main()close allclc % 清空命令窗口的所有输入和输出类似于自动弹出提示框读取图像filename,filepath=uigetfile(.jpg,输入需要识别的车牌图像);% %自动直接读入%file=strcat(filepath,filename); %strcat函数:连接字符串;把;filepath的字符串与filename的连接,即路径/文件名I=imread(file);figure(name,原图),imshow(I);title(原图)%图像增强% h=ones(5,5)/。

2、25; %过滤器h% I=imfilter(I,h);%真色增强% figure(name,真彩色增强);imshow(I);title(增强真色);I1=rgb2gray(I); % RGB图像转灰度图像figure(name,灰度处理前),subplot(1,2,1),imshow(I1);title(灰度处理前的灰度图);subplot(1,2,2),imhist(I1);title(灰度处理前的灰度图直方图);%线性灰度变化I1=imadjust(I1,0.3,0.7,);figure(name,灰度处理后),subplot(1,2,1),imshow(I1);title(灰度处理。

3.后灰度图);subplot(1,2,2),imhist(I1);title(灰度处理后的灰度图直方图);%中值滤波I1=medfilt2(I1);figure,imshow(I1);title(中值滤波);%边缘检测:sobel,roberts,canny,prewitt等I2=edge(I1,roberts,0.25,both); %边缘检测算法强度小于阈值0.省略了15个边缘,both两个方向检测(缺省默认)figure(name,边缘检测),imshow(I2);title(robert算子边缘检测) se=1;1;1;I3=imerode(I2,se);% 腐蚀Imerode。

4、(X,SE).其中X是待处理的图像,SE是结构元素的对象figure(name,腐蚀后图像),imshow(I3);title(腐蚀图像);se=strel(rectangle,20,20);% 25X25的矩形 strel?I4=imclose(I3,se);% 用25*25矩形关闭图像(先膨胀后腐蚀),边界平滑figure(name,平滑处理),imshow(I4);title(平滑图像轮廓);I5=bwareaopen(I4,1000);% 从二进制图像中00像素的连接对象从二进制图像中移除,连续的白色像素少于2000个字符消失了figure(name,移除小对象)。

5、,imshow(I5);title(从对象中删除小对象);y,x,z=size(I5);% y是行数,x是列数,z是维数myI=double(I5);% 转为双精度型tic % 开始计时Blue_y=zeros(y,1);% zeros(M,N) 表示M行*N列的全0矩阵for i=1:yfor j=1:xif(myI(i,j,1)=1) % 判断蓝色像素Blue_y(i,1)= Blue_y(i,1) 1;% 蓝色像素点统计 end end endtemp MaxY=max(Blue_y);% Y确定方向车牌区域 temp MaxY临时变量MaxYPY1=MaxY; % 以下是找车牌Y方。

6、向最小值while (Blue_y(PY1,1)=5)&(PY11)% 为什么要判断蓝色像素点=5(蓝色)?PY1=PY1-1;end PY2=MaxY; % 以下是找车牌Y方向最大值 ?最大值不是吗?MaxY?while (Blue_y(PY2,1)=5)&(PY2PX1)PX2=PX2-1;endPY1=PY1-2;% 校正车牌区域 为什么要这样? ?PX1=PX1-2;PX2=PX2 3;PY2=PY2 10;dw=I(PY1:PY2-8,PX1:PX2,:);% 裁剪图像toc %t=toc; % 停止计时%figure(7),subplot(1,2,1),imshow(IY),t。

7、itle(合理区域);figure(name,定位剪切后的彩色车牌图像),%subplot(1,2,2),imshow(dw),title(定位剪切后的彩色车牌图像)imwrite(dw,dw.jpg);% %自动直接读入%filename,filepath=uigetfile(dw.jpg,输入定位切割后的车牌图像);%jpg=strcat(filepath,filename); % strcat函数:连接字符串;把;filepath的字符串与filename的连接,即路径/文件名a=imread(dw.jpg);b=rgb2gray(a);imwrite(b,1.车牌灰度图像.jpg。

8、);figure(name,车牌处理);subplot(3,2,1),imshow(b),title(1)车牌灰度图像%g_max=double(max(max(b);% 以下是阈值化(灰度图为二值图)%g_min=double(min(min(b);% max(a)每列最大值,是一维数据;max(max(a) 这一维数据的最大值。%T=round(g_max-(g_max-g_min)/2); % T 二值化阈值 round:取整为最近的整数%m,n=size(b);% m:b的行向量数 n:b列向量的%d=(double(b)=T); % d:二值图像%imwrite(d。

9.2.车牌二值图像.jpg);%线性灰度变化b=imadjust(b,0.3,0.7,);subplot(3,2,2),imshow(b);title(2.线性灰度处理后的灰度图);%二值化处理d=im2bw(b,0.4)对灰度图像进行二值化处理imwrite(d,2.车牌二值图像.jpg);subplot(3,2,3),imshow(d),title(3.车牌二值图像)%显示二值图像%进行中值滤波d=medfilt2(d);imwrite(d,4.均值滤波后.jpg);subplot(3,2,4),imshow(d);title(4.中值滤波后);% 均值滤波%h=fspecia。

10、l(average,3);%d=im2bw(round(filter2(h,d);% 滤波后,im2bw():将图像转化为二值图像 (可以不用round函数 也一样)%%%%%%imwrite(d,4.均值滤波后.jpg);%subplot(3,2,4),imshow(d),title(4)均值滤波后的% 某些图像操作% 膨胀或腐蚀 ?感觉没什么效果?感觉没什么效果? se=strel(square,3); % 使用一个3X3正方形结果元素对象膨胀创建的图像% line/diamond/ball/square/dish. 线/菱形/球/方形/圆se=eye(2); % eye(n) 返回n乘n单一矩。

11、阵; 单位矩阵m,n=size(d);if bwarea(d)/m/n=0.365 % 函数bwarea 计算目标物的面积,单位是像素;bwarea/m/n即单个像素?d=imerode(d,se);% 腐蚀elseif bwarea(d)/m/n=round(n/6.5)val,num=min(sum(d(:,k1 5:k2-5);d(:,k1 num 5)=0; % 分割endend% 再切割%d=qiege(d);% 切割出 7 个字符y1=10;y2=0.25;flag=0;word1=;while flag=0 % flag为了标记回收,自定义m,n=size(d);%left。

12、=1;wide=0;while sum(d(:,wide 1)=0 % 二值图像:黑色像素代表感兴趣的对象,白色像素代表背景。逻辑矩阵只包括0(黑)和1(白)wide=wide 1;% ?wide的意义?endif widey2 %?什么意思?flag=1;word1=temp; %第一个字符endd(:,1:wide)=0;d=qiege(d); %?为什么要再处理一次?endend% 分割第二个字符word2,d=getword(d);% 分割第三个字符word3,d=getword(d);% 分割第四个字符word4,d=getword(d);% 分割第五个字符wo。

13、rd5,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(。

14、6);subplot(5,7,7),imshow(word7),title(7);m,n=size(word1);% 商业系统程序中归一化的大小 40*20,此处演示word1=imresize(word1,40 20);%imresize缩放图像,常用调用格式为:B=imresize(A,ntimes,method);其中method可选nearest,bilinear(双线性),bicubic,box,lanczors2,lanczors3等word2=imresize(word2,40 20);word3=imresize(word3,40 20);word4=imresize(。

15、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(11);subplot(5,7,16),imshow(word2),title(22);subplot(5,7,17),imshow(word3),title(33);subplot(5,7,18),imshow(word4),title(44);subplot(5,7,19),imshow(word5),title(55);sub。

16、plot(5,7,20),imshow(word6),title(66);subplot(5,7,21),imshow(word7),title(77);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 京辽桂陕苏渝浙); %建立自动识别字符代码表;京津沪渝港澳吉辽鲁豫冀鄂湘晋青皖苏赣浙。

17、闽粤琼台陕甘云川贵黑藏蒙桂新宁% 编号:0-9分别为 1-10;A-Z分别为 11-36;% 京 津 沪 渝 港 澳 吉 辽 鲁 豫 冀 鄂 湘 晋 青 皖 苏% 赣 浙 闽 粤 琼 台 陕 甘 云 川 贵 黑 藏 蒙 桂 新 宁% 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 % 60 61 62 63 64 65 66 67 68 69 70SubBw2=zeros(40,20); % 创建一个40行20列的0矩阵l=1;for I=1:7ii=int2str(I); % 将整型数据转换为字符串型数。

18、据t=imread(ii,.jpg);% 依次读入七位车牌字符SegBw2=imresize(t,40 20,nearest); % 对读入的字符进行缩放if I=1 % 第一位汉字识别kmin=37;kmax=43;elseif I=2 % 第二位 AZ 字母识别kmin=11;kmax=36;else % 第三位以后是字母或数字识别 ;即I=3kmin=1;kmax=36; endfor k2=kmin:kmaxfname=strcat(字符模板,liccode(k2),.jpg); % strcat函数:连接字符串SamBw2 = imread(fname);for i=1:40for 。

19、j=1:20SubBw2(i,j)=SegBw2(i,j)-SamBw2(i,j);endend% 以上相当于两幅图相减得到第三幅图 进行匹配Dmax=0; % 与模板不同的点个数for k1=1:40for l1=1:20if ( SubBw2(k1,l1) 10 | SubBw2(k1,l1) 2 15)20以上无区别Dmax=Dmax+1;endendendError(k2)=Dmax; % 记录下字符与模板k2不同的点个数end Error1=Error(kmin:kmax);MinError=min(Error1); % 差别最小的findc=find(Error1=MinError。

20、); % 找出差别最小的模板Code(l)=liccode(findc(1)+kmin-1); % 此处用2*l-1且后面的2*l= ,第隔一空格输出一个字符Code(3)= ;Code(4)= ;l=l+1;if l=3;% 后五位与前两位字符隔开l=l+2;endendfigure(10),subplot(5,7,1:7),imshow(dw),title(第一步:车牌定位),xlabel(第二步:车牌分割); %,subplot(6,7,15),imshow(word1);subplot(6,7,16),imshow(word2);subplot(6,7,17),imshow(word3。

21、);subplot(6,7,18),imshow(word4);subplot(6,7,19),imshow(word5);subplot(6,7,20),imshow(word6);subplot(6,7,21),imshow(word7);subplot(6,7,22:42),imshow(dw.jpg);%xlabel(第三步:识别结果为: , Code,Color,b);图片:我做的是神经网络车牌识别,我用自己的程序可以识别两块车牌,但是当识别别的车牌时候却一直报错。我两块车牌一块640*480可以识别,另一块就不能识别。报错内容如下求大神指点该怎么改!:? Attempted to 。

22、access X1(1,405); index out of bounds becausesize(X1)=1,404.Error in = main1 at 120 while (X1(1,Px0)=50)&(PY11)PY1=PY1-1;end PY2=MaxY;while (Y1(PY2,1)=50)&(PY2PX1)PX2=PX2-1;end%分割出车牌图像%dw=I(PY1:PY2,PX1:PX2,:); imwrite(dw,dw.jpg,jpg);figure(2),subplot(2,2,3),imshow(dw);title(定位剪切后的彩色车牌图像);figure(3),s。

23、ubplot(2,2,1),imshow(dw);title(定位后的车牌图像);I1 = rgb2gray(dw); %将RGB图像转化为灰度图像g_max=double(max(max(I1); %获取I1中灰度最大值g_min=double(min(min(I1); %获取I1中灰度最小值T=round(g_max-(g_max-g_min)/3); % 计算二值化的阈值后赋值于TI1=im2bw(I1,T/256);subplot(2,2,2);imshow(I1),title(二值化车牌图像);I2=bwareaopen(I1,20);%删除面积小于20的区域figure(3),su。

24、bplot(2,2,3),imshow(I2);title(形态学滤波后的二值化图像);y1,x1=size(I2);I3=double(I2);%去除图像顶端和底端的不感兴趣区域%Y1=zeros(y1,1);for i=1:y1for j=1:x1if(I3(i,j,1)=1) Y1(i,1)= Y1(i,1)+1 ;end end endPy0=1;while (Y1(Py0,1)=20)&(Py1=5)&(Px1=5)&(Px1=10)&(d=10且dgx;y2 = y1gy;% figure(7)% subplot(321); plot(1:c,x,b); ylabel(x); ax。

25、is tight% subplot(322); plot(1:r,y,b); ylabel(y); axis tight% subplot(323); plot(1:c,x1,b,1:c,repmat(gx,1,c),r); ylabel(x1); axis tight% subplot(324); plot(1:r,y1,b,1:r,repmat(gy,1,r),r); ylabel(y1); axis tight% subplot(325); plot(1:c,x2,b.-); ylabel(x2); axis tight% subplot(326); plot(1:r,y2,b.-); 。

26、ylabel(y2); axis tighti = find(x2=1);j = find(y2=1);width = max(i)-min(i)+n;height = max(j)-min(j)+n;xmin = min(i)-(n-1)/2;ymin = min(j)-(n-1)/2;J8 = imcrop(J6,xmin,ymin,width,height);% figure(8); imshow(J8,InitialMagnification,fit); title(file); %-% 影子处理x = mean(J8(1:round(end/2),:);c = length(x);k。

27、 = 1;x1 = xk;% figure(9);% subplot(211); plot(1:c,x,b,1:c,repmat(k,1,c),r); axis tight% subplot(212); plot(1:c,x0,b.-); axis tighti = find(x1=1);xmin = xmin+min(i);width = max(i)-min(i);%-% 区域微调xmin = xmin-10;height = height-10;tmp = uint8(zeros(size(J1);tmp(ymin:ymin+height-1,xmin:xmin+width-1,:) = 255;J10 = min(J1,tmp);figure(10); imshow(J10,InitialMagnification,fit); title(file); disp(* over! *)处理结果如下。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章