matlab运行出现如下错误:??? Undefined function or variable "a".求大神指导
closeallclearclcI=imread('F:\毕设\biao5.jpg');subplot(3,2,1);imshow(I)title('原始图像');I_g...
close all
clear
clc
I=imread('F:\毕设\biao5.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=[1;1;1];
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,6000); %去除聚团灰度值小于2000的部分
I_final=I_close-I_final;
I_final=bwareaopen(I_final,5000);
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_1;newlocation];
end
end
end
mini=inf;maxi=0;
for i=1:size(location_of_1,1)
%寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置
temp=location_of_1(i,1)+location_of_1(i,2);
if temp<mini
mini=temp;
a=i;
end
if temp>maxi
maxi=temp;
b=i;
end
end
first_point=location_of_1(a,:); %和最小的点为车牌的左上角
last_point=location_of_1(b,:); %和最大的点为车牌的右下角
x1=first_point(1)+4; %坐标值修正
x2=last_point(1)-4; y1=first_point(2)+4;
y2=last_point(2)-4; I_plate=I(x1:x2,y1:y2);
I_plate=OTSU5(I_plate); %以OTSU算法对分割出的车牌进行自适应二值化处理
I_plate(:,size(I_plate,2)-1:size(I_plate,2))=0;
I_plate(size(I_plate,1),size(I_plate,2)-5:size(I_plate,2))=0;
I_plate=imclearborder(I_plate,8);
figure,subplot(2,1,1),imshow(I_plate),title('车牌提取') %画出最终车牌 展开
clear
clc
I=imread('F:\毕设\biao5.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=[1;1;1];
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,6000); %去除聚团灰度值小于2000的部分
I_final=I_close-I_final;
I_final=bwareaopen(I_final,5000);
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_1;newlocation];
end
end
end
mini=inf;maxi=0;
for i=1:size(location_of_1,1)
%寻找所有白点中,x坐标与y坐标的和最大,最小的两个点的位置
temp=location_of_1(i,1)+location_of_1(i,2);
if temp<mini
mini=temp;
a=i;
end
if temp>maxi
maxi=temp;
b=i;
end
end
first_point=location_of_1(a,:); %和最小的点为车牌的左上角
last_point=location_of_1(b,:); %和最大的点为车牌的右下角
x1=first_point(1)+4; %坐标值修正
x2=last_point(1)-4; y1=first_point(2)+4;
y2=last_point(2)-4; I_plate=I(x1:x2,y1:y2);
I_plate=OTSU5(I_plate); %以OTSU算法对分割出的车牌进行自适应二值化处理
I_plate(:,size(I_plate,2)-1:size(I_plate,2))=0;
I_plate(size(I_plate,1),size(I_plate,2)-5:size(I_plate,2))=0;
I_plate=imclearborder(I_plate,8);
figure,subplot(2,1,1),imshow(I_plate),title('车牌提取') %画出最终车牌 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询