篇一:车牌识别的matlab程序(程序,讲解,模板)
clc
clear close all
I=imread('chepai.jpg')
subplot(3,2,1)imshow(I), title('原始图像'握返)
I_gray=rgb2gray(I)
subplot(3,2,2),imshow(I_gray),title('灰度图像')
%======================形态学预处理 ====================== I_edge=edge(I_gray,'sobel')
subplot(3,2,3),imshow(I_edge),title('边缘检测后图像')se=[111]
I_erode=imerode(I_edge,se)
subplot(3,2,4),imshow(I_erode),title('腐蚀后边缘图像')
se=strel('rectangle',[25,25])
I_close=imclose(I_erode,se)%图像闭合、填祥皮神充图像 subplot(3,2,5),imshow(I_close),title('填充后图像')
I_final=bwareaopen(I_close,2000)%去除聚团灰度值小于2000的部分 subplot(3,2,6),imshow(I_final),title('形态滤波后图像')
%==========================车牌分割 ============================= I_new=zeros(size(I_final,1),size(I_final,2))location_of_1=[]
for i=1:size(I_final,1) %寻找二值图像中白的点的位置 for j=1:size(I_final,2)
if I_final(i,j)==1
newlocation=[i,j]
location_of_1=[location_of_1newlocation]end end end
mini=infmaxi=0
for i=1:size(location_of_1,1)
%寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置 temp=location_of_1(i,1)+location_of_1(i,2)if temp
if tempmaximaxi=tempb=i
end
end
first_point=location_of_1(a,:)%和最小的点为车牌谨亏的左上角 last_point=location_of_1(b,:)%和最大的点为车牌的右下角 x1=first_point(1)+4%坐标值修正 x2=last_point(1)-4y1=first_point(2)+4
y2=last_point(2)-4I_plate=I(x1:x2,y1:y2)
I_plate=OTSU(I_plate)%以OTSU算法对分割出的车牌进行自适应二值化处理
I_plate=bwareaopen(I_plate,50)
figure,imshow(I_plate),title('车牌提取') %画出最终车牌
%=========================字符分割============================ X=[]%用来存放水平分割线的横坐标 flag=0
for j=1:size(I_plate,2)
sum_y=sum(I_plate(:,j))
if logical(sum_y)~=flag%列和有变化时,记录下此列X=[X j]
flag=logical(sum_y)end end
figure
for n=1:7
char=I_plate(:,X(2*n-1):X(2*n)-1)%进行粗分割
for i=1:size(char,1)%这两个for循环对分割字符的上下进行裁剪if sum(char(i,:))~=0 top=ibreakend end
for i=1:size(char,1)
if sum(char(size(char,1)-i,:))~=0 bottom=size(char,1)-ibreakend en
可以使用MATLAB的OCR函数进行车牌识别,但是需要注意一些问题。首先,OCR函数需要训练模型来识别特定字体的字符。对于车牌识别,需要训练OCR模型来识别车牌上的字符。如果您没有训练好的模型,需要先收集一组车牌图像和相应的字符标签,然后使用OCR训练器进行训练。这个过程可能需要大量的时间和计算资源。
其次,车牌识别还需要进行图像处理和字符分割等预处理工作。车牌图像通常包括噪声、模糊和变形等问题,需要使用图像处理技术进行预处理。字符分割是将车牌上的字符单独分割出来,通常需要使用形态学运算和阈值分割等技术。
最后,OCR函数可能会首型脊出现识别错误。对于车牌识别应用,识别错误可能会导致严重的后果,因此需要进行误差分析和纠正,或者使用其他更加准确的识别技术。
因此,使用MATLAB的OCR函数租锋进行车者渗牌识别需要进行大量的前期工作和后期调试,建议在使用之前充分了解车牌识别的相关技术和实现方式。
从程序看,xdata是在if条件循环中赋值的,如果条件不满足,xdata是得不到值的,这时,if条件外的程序用到xdata时,就会有出错提示。要改,就要在if条件循环前面雹此先赋值,如全0,再在核肆孙改链if条件中修改。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)