www.gusucode.com > 基于matlab编程去除车道线和其他非圆碟形状的结构目标物源 > 基于matlab编程去除车道线和其他非圆碟形状的结构目标物源码程序/code/main.m

    clc
trafficObj=VideoReader('a.avi'); 
nframes=get(trafficObj,'NumberOfFrames');
I=read(trafficObj,1);
darkCarValue=50;
taggedCars=zeros([size(I,1) size(I,2) 3 nframes],class(I));
for k=1:nframes
    singleFrame=read(trafficObj,k);
    I=rgb2gray(singleFrame);
noDarkCars=imextendedmax(I,darkCarValue);
sedisk=strel('disk',2);
noSmallStructures=imopen(noDarkCars,sedisk);
noSmallStructures=bwareaopen(noSmallStructures,150);
L=bwlabel(noSmallStructures);
taggedCars(:,:,:,k)=singleFrame;
if any(L(:))
    stats=regionprops(L,{'centroid','area'});
    areaArray=[stats.Area];
    [junk,idx]=max(areaArray);
    c=stats(idx).Centroid;
    c=floor(fliplr(c));
    width=2;
    row=c(1)-width:c(1)+width;
    col=c(2)-width:c(2)+width;
   taggedCars(row,col,1,k)=255;
     taggedCars(row,col,2,k)=0;
        taggedCars(row,col,3,k)=0;
end
end
frameRate=get(trafficObj,'FrameRate');
implay(taggedCars,frameRate);

% imshow(darkCar);
figure, imshow(noDarkCar)