📄 2denggaoxianshuzishibie.m
字号:
bw=imread('D:\MATLAB7\work\5f00.bmp');
[x,y]=size(bw); %数组num,sum保存着扫描线穿越黑像素区域互不相邻的交点数
n=zeros(1,8); %从上到下共8个部分,每个部分的最大交点数
m=zeros(1,8); %从左到右共8个部分,每个部分的最大交点数
if(x/8-floor(x/8))>=0.5,h=floor(x/8)+1;else h=floor(x/8);
end
if(y/8-floor(y/8))>=0.5,w=floor(y/8)+1;else w=floor(y/8);
end
for i=1:x
count=0; %连续黑像素点的个数
for j=1:y
pixels=impixel(bw,j,i);
if(pixels==[0 0 0])
count=count+1;
elseif(count>1)
num(i)=num(i)+1;
count=0;
end
end
end
for i=1:7
n(i)=num(1+(i-1)*h);
for j=2:h
if(n(i)<num(j+(i-1)*h)),n(i)=num(j+(i-1)*h);
end
end
end
k=1+7*h;
n(8)=num(k);
for j=(k+1):x
if n(8)<num(j),n(8)=num(j);
end
end
for i=1:y
count=0; %连续黑像素点的个数
for j=1:x
pixels=impixel(bw,i,j);
if(pixels==[0 0 0])
count=count+1;
elseif(count>1)
sum(i)=sum(i)+1;
count=0;
end
end
end
for i=1:7
m(i)=sum(1+(i-1)*w);
for j=2:w
if(m(i)<sum(j+(i-1)*w)),m(i)=sum(j+(i-1)*w);
end
end
end
k=1+7*w;
m(8)=sum(k);
for j=(k+1):y
if m(8)<sum(j),m(8)=sum(j);
end
end
if((n(1)==1)&(n(2)==2|n(2)==1)&n(3)==2&n(4)==2&n(5)==2&n(6)==2&(n(7)==2|n(7)==1)&(n(8)==1|n(8)==0)&(m(1)==1)&m(2)==1&m(3)==1&m(4)==2&(m(5)==2)&(m(6)==1|m(6)==2)&(m(7)==1)&(m(8)==1))
msgbox('此数字为0');
end
if((x/y)>2.4)
msgbox('此数字为1');
return;
end
if(n(1)==1&n(2)==1&n(3)==2&(n(4)==1|n(4)==2)&n(5)==1&(n(6)==1)&(n(7)==1)&(n(8)==1)&(m(1)==2|m(1)==1)&(m(2)==2)&(m(3)==3|m(3)==2)&(m(4)==3|m(4)==2)&(m(5)==3|m(5)==2)&(m(6)==2|m(6)==3)&(m(7)==2|m(7)==1)&(m(8)==1|m(8)==0|m(8)==2))
msgbox('此数字为2');
end
if((n(1)==1)&(n(2)==2|n(2)==1)&(n(3)==2)&n(4)==1&(n(5)==1|n(5)==2)&(n(6)==1|n(6)==2)&(n(7)==2|n(7)==1)&(n(8)==1|n(8)==0)&(m(1)==1|m(1)==2)&(m(2)==2)&(m(3)==2)&(m(4)==3)&(m(5)==3)&(m(6)==2|m(6)==1)&(m(7)==2|m(7)==1)&(m(8)==2))
msgbox('此数字为3');
end
if(n(1)==1&n(2)==1&(n(3)==1)&(n(4)==1)&(n(5)==2|n(5)==1)&(n(6)==2|n(6)==1)&(n(7)==1)&(n(8)==1)&(m(1)==1)&(m(2)==1)&(m(3)==1)&(m(4)==2|m(4)==1)&(m(5)==2|m(5)==1)&(m(6)==1)&(m(7)==1|m(7)==2)&(m(8)==1|m(8)==0))
msgbox('此数字为4');
end
if(n(1)==1&n(2)==1&n(3)==1&(n(4)==1)&(n(5)==2|n(5)==1)&(n(6)==1|n(6)==2)&(n(7)==2)&n(8)==1&(m(1)==1|m(1)==2)&(m(2)==2)&m(3)==2&(m(4)==3|m(4)==2)&(m(5)==3)&(m(6)==2|m(6)==3)&(m(7)==2)&(m(8)==2|m(8)==1|m(8)==0))
msgbox('此数字为5');
end
if(n(1)==1&(n(2)==2|n(2)==1)&(n(3)==2)&(n(4)==1|n(4)==2)&(n(5)==2|n(5)==1)&(n(6)==2)&(n(7)==2)&n(8)==1&(m(1)==1)&(m(2)==1)&m(3)==1&(m(4)==3|m(4)==2)&(m(5)==3)&(m(6)==3|m(6)==2)&(m(7)==2)&(m(8)==2))
msgbox('此数字为6');
end
if(n(1)==1&n(2)==1&n(3)==1&n(4)==1&n(5)==1&(n(6)==1)&(n(7)==1)&(n(8)==1)&(m(1)==1)&(m(2)==1|m(2)==2)&(m(3)==2|m(3)==1)&(m(4)==2)&(m(5)==2|m(5)==1)&(m(6)==1)&(m(7)==1)&(m(8)==1))
msgbox('此数字为7');
end
if((n(1)==1)&(n(2)==2|n(2)==1)&n(3)==2&(n(4)==2|n(4)==1)&(n(5)==2|n(5)==1)&(n(6)==2|n(6)==1)&(n(7)==2|n(7)==1)&(n(8)==1|n(8)==0)&(m(1)==2|m(1)==1)&(m(2)==2|m(2)==1)&(m(3)==1)&(m(4)==3|m(4)==2|m(4)==1)&(m(5)==3)&(m(6)==2|m(6)==1|m(6)==3)&(m(7)==1|m(7)==2)&(m(8)==1|m(8)==2))
msgbox('此数字为8');
end
if((n(1)==1)&(n(2)==2|n(2)==1)&n(3)==2&(n(4)==2|n(4)==1)&(n(5)==1)&(n(6)==1|n(6)==2)&(n(7)==2|n(7)==1)&(n(8)==1|n(8)==0)&(m(1)==1|m(1)==2)&(m(2)==2)&m(3)==2&(m(4)==3)&(m(5)==3)&(m(6)==2|m(6)==1)&(m(7)==1)&(m(8)==1))
msgbox('此数字为9');
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -