%计算车辆数的子函数
function [count,aCarlinePre,bCarlinePre,k] =carnum(c,count,aCarlinePre,bCarlinePre,k)
%aCarline用于记录当前第一条检测线的状态,aCarlinePre用于记录前一帧第一条检测线的状态
%bCarline用于记录当前第二条检测线的状态,bCarlinePre用于记录前一帧第二条检测线的状态
%k作为标记是否经过一条线,count用来计算车辆数
%变量初始化
aCarline=[0 0 0 0];bCarline=[0 0 0 0];
%第一个车道
%第一条检测线判断有没有车辆通过
for m=41
for n=180:220
if(c(m,n)==1)
aCarline(1)=aCarline(1)+1;
end
end
if(aCarline(1)>0&&aCarlinePre(1)==0)
k(1)=1;
aCarlinePre(1)=aCarline(1);
else
aCarlinePre(1)=aCarline(1);
end
end
%第二条检测线判断车辆是否驶离圈定区域
for m=105
for n=160:200
if(c(m,n)==1)
bCarline(1)=bCarline(1)+1;
end
end
if(bCarline(1)==0&&bCarlinePre(1)>0)
k(1)=k(1)+1;
bCarlinePre(1)=bCarline(1);
else
bCarlinePre(1)=bCarline(1);
end
end
if(k(1)==2)
count(1)=count(1)+1;
k(1)=0;
end
%第二个车道
%第一条检测线判断有没有车辆通过
for m=120
for n=280:320
if(c(m,n)==1)
aCarline(2)=aCarline(2)+1;
end
end
if(aCarline(2)>0&&aCarlinePre(2)==0)
k(2)=1;
aCarlinePre(2)=aCarline(2);
else
aCarlinePre(2)=aCarline(2);
end
end
%第二条检测线判断车辆是否驶离圈定区域
for m=180
for n=280:320
if(c(m,n)==1)
bCarline(2)=bCarline(2)+1;
end
end
if(bCarline(2)==0&&bCarlinePre(2)>0)
k(2)=k(2)+1;
bCarlinePre(2)=bCarline(2);
else
bCarlinePre(2)=bCarline(2);
end
end
if(k(2)==2)
count(2)=count(2)+1;
k(2)=0;
end
%第三个车道
%第一条检测线判断有没有车辆通过
for m=30
for n=360:400
if(c(m,n)==1)
aCarline(3)=aCarline(3)+1;
end
end
if(aCarline(3)>0&&aCarlinePre(3)==0)
k(3)=1;
aCarlinePre(3)=aCarline(3);
else
aCarlinePre(3)=aCarline(3);
end
end
%第二条检测线判断车辆是否驶离圈定区域
for m=70
for n=360:400
if(c(m,n)==1)
bCarline(3)=bCarline(3)+1;
end
end
if(bCarline(3)==0&&bCarlinePre(3)>0)
k(3)=k(3)+1;
bCarlinePre(3)=bCarline(3);
else
bCarlinePre(3)=bCarline(3);
end
end
if(k(3)==2)
count(3)=count(3)+1;
k(3)=0;
end
%第四个车道
%第一条检测线判断有没有车辆通过
for m=25
for n=450:490
if(c(m,n)==1)
aCarline(4)=aCarline(4)+1;
end
end
if(aCarline(4)>0&&aCarlinePre(4)==0)
k(4)=1;
aCarlinePre(4)=aCarline(4);
else
aCarlinePre(4)=aCarline(4);
end
end
%第二条检测线判断车辆是否驶离圈定区域
for m=60
for n=470:510
if(c(m,n)==1)
bCarline(4)=bCarline(4)+1;
end
end
if(bCarline(4)==0&&bCarlinePre(4)>0)
k(4)=k(4)+1;
bCarlinePre(4)=bCarline(4);
else
bCarlinePre(4)=bCarline(4);
end
end
if(k(4)==2)
count(4)=count(4)+1;
k(4)=0;
end
评论2