主题:这样的报错是什么原因?请各位大侠帮忙啊
程序如下:
%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%工件检测%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
clear,close all;
I=imread('a88.bmp');
%%imshow(I)
%title('原始图像')
%%%%以下是对图像进行预处理%%%%%
I=im2double(I);
h=fspecial('gaussian',7,4);%%%使用高斯掩膜
g=imfilter(I,h,'replicate');
%figure,imshow(g)
%%%以下对平滑后的图像进行阈值处理%%%%%
g=im2bw(g,graythresh(g));%二值变化
%figure,imshow(g);
%title('初处理后的图像');
g=imcomplement(g);%取反
%%%开运算%%%%%
se=strel('disk',5);
fo=imopen(g,se);
%figure,imshow(fo);
%title('基本处理后的图像');
BW1=bwfill(fo,'holes');
%figure,imshow(BW1);
%title('填充后的图像');
%%%%%%%%%%%%%%%%%%%%%%%%
BW2=BW1;
siz=size(g);
row=siz(1);
line=siz(2);
ls=row*line;
s=0;
f=0;
h=1;
g=1;
sign=0;%表记号
b=zeros(1,100);%创建数组
d=zeros(1,100);%创建数组
%以下是进行行扫描
for n=1:row
for m=1:line
if (BW2(n,m)==1) & (sign==0)
sign=1;
n1=n;
m1=m;
elseif (BW2(n,m)==0) & (sign==1)
sign=0;
n2=n;
m2=m;
c=(m1+m2)/2;
if(h<=100)
b(h)=c;
h=h+1;
end
end
end
end
n1
m1
n2
m2
b
s=median(b)
%以下是进行列扫描
for j=1:line
for k=1:row
if (BW2(k,j)==1) & (sign==0)
sign=1;
j1=j;
k1=k;
elseif (BW2(k,j)==0) & (sign==1)
sign=0;
j2=j;
k2=k;
e=(k1+k2)/2;
if(g<=100)
d(g)=e;
g=g+1;
end
end
end
end
j1
k1
j2
k2
d
line
f=median(d)
w=[s f]
n3=int16(s)
m3=int16(f)
%%%对圆心做标记%%%
%BW2(m3+1,n3)=0;
%BW2(m3,n3)=0;
%BW2(m3-1,n3)=0;
%figure,imshow(BW2);
%title('显示圆心的图像');
%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
%%%%以下是求圆的大半径和小半径%%%%%%
mi=m3
sign=0;
for m3=m3:line
if(fo(n3,m3)==1)&(sign==0)
sign=1;
m4=m3
r=m4-mi
elseif(fo(n3,m3)==0)&(sign==1)
sign=0;
m5=m3
R=m5-mi
end
end
L=R-r
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m6=mi
n7=1;
m7=1;
for n7=1:row
for m7=1:line
r1=sqrt((n7-s).^2+(m7-f).^2);
if(r1>R-18)
BW1(n7,m7)=1;
elseif(r1<r+7)
BW1(n7,m7)=1;
end
end
end
BW1=imcomplement(BW1);
%figure,imshow(BW1)
%[r,c]=find(bwlabel(BW1)==1);
%rc=[r,c]
S=bwlabel(BW1);
stats=regionprops(S,'MajorAxisLength');
stats(1)
changdu=[stats.MajorAxisLength]
if(changdu>=L/2)
figure,imshow(I)
title('SORRY,这是不合格工件,您被淘汰了')
else(changdu<L/2)
figure,imshow(I)
title('OK,这个工件是合格的,您通过了')
end
运行到求大半径和小半径的时候出现下列报错:
??? Error using ==> _colonobj
Function '_colonobj' is not defined for values of class 'int8'.
??? Error using ==> edit
Can't edit the built-in function '_colonobj'.
求各位大侠帮忙啊
%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%工件检测%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%
clear,close all;
I=imread('a88.bmp');
%%imshow(I)
%title('原始图像')
%%%%以下是对图像进行预处理%%%%%
I=im2double(I);
h=fspecial('gaussian',7,4);%%%使用高斯掩膜
g=imfilter(I,h,'replicate');
%figure,imshow(g)
%%%以下对平滑后的图像进行阈值处理%%%%%
g=im2bw(g,graythresh(g));%二值变化
%figure,imshow(g);
%title('初处理后的图像');
g=imcomplement(g);%取反
%%%开运算%%%%%
se=strel('disk',5);
fo=imopen(g,se);
%figure,imshow(fo);
%title('基本处理后的图像');
BW1=bwfill(fo,'holes');
%figure,imshow(BW1);
%title('填充后的图像');
%%%%%%%%%%%%%%%%%%%%%%%%
BW2=BW1;
siz=size(g);
row=siz(1);
line=siz(2);
ls=row*line;
s=0;
f=0;
h=1;
g=1;
sign=0;%表记号
b=zeros(1,100);%创建数组
d=zeros(1,100);%创建数组
%以下是进行行扫描
for n=1:row
for m=1:line
if (BW2(n,m)==1) & (sign==0)
sign=1;
n1=n;
m1=m;
elseif (BW2(n,m)==0) & (sign==1)
sign=0;
n2=n;
m2=m;
c=(m1+m2)/2;
if(h<=100)
b(h)=c;
h=h+1;
end
end
end
end
n1
m1
n2
m2
b
s=median(b)
%以下是进行列扫描
for j=1:line
for k=1:row
if (BW2(k,j)==1) & (sign==0)
sign=1;
j1=j;
k1=k;
elseif (BW2(k,j)==0) & (sign==1)
sign=0;
j2=j;
k2=k;
e=(k1+k2)/2;
if(g<=100)
d(g)=e;
g=g+1;
end
end
end
end
j1
k1
j2
k2
d
line
f=median(d)
w=[s f]
n3=int16(s)
m3=int16(f)
%%%对圆心做标记%%%
%BW2(m3+1,n3)=0;
%BW2(m3,n3)=0;
%BW2(m3-1,n3)=0;
%figure,imshow(BW2);
%title('显示圆心的图像');
%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%
%%%%以下是求圆的大半径和小半径%%%%%%
mi=m3
sign=0;
for m3=m3:line
if(fo(n3,m3)==1)&(sign==0)
sign=1;
m4=m3
r=m4-mi
elseif(fo(n3,m3)==0)&(sign==1)
sign=0;
m5=m3
R=m5-mi
end
end
L=R-r
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
m6=mi
n7=1;
m7=1;
for n7=1:row
for m7=1:line
r1=sqrt((n7-s).^2+(m7-f).^2);
if(r1>R-18)
BW1(n7,m7)=1;
elseif(r1<r+7)
BW1(n7,m7)=1;
end
end
end
BW1=imcomplement(BW1);
%figure,imshow(BW1)
%[r,c]=find(bwlabel(BW1)==1);
%rc=[r,c]
S=bwlabel(BW1);
stats=regionprops(S,'MajorAxisLength');
stats(1)
changdu=[stats.MajorAxisLength]
if(changdu>=L/2)
figure,imshow(I)
title('SORRY,这是不合格工件,您被淘汰了')
else(changdu<L/2)
figure,imshow(I)
title('OK,这个工件是合格的,您通过了')
end
运行到求大半径和小半径的时候出现下列报错:
??? Error using ==> _colonobj
Function '_colonobj' is not defined for values of class 'int8'.
??? Error using ==> edit
Can't edit the built-in function '_colonobj'.
求各位大侠帮忙啊