⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 videopro.m

📁 基于matlab m文件识别白车
💻 M
字号:

trafficObj = mmreader('viptraffic.avi');


frameRate = get(trafficObj,'FrameRate');
% video = read(trafficObj);
% implay(video, frameRate);
darkCarValue = 50;
darkCar = rgb2gray(read(trafficObj,71));
noDarkCar = imextendedmax(darkCar, darkCarValue);
imshow(darkCar)
figure, imshow(noDarkCar)

sedisk = strel('disk',10);
noSmallStructures = imopen(noDarkCar, sedisk);
imshow(noSmallStructures)



nframes = get(trafficObj, 'NumberOfFrames');
I = read(trafficObj, 1);
taggedCars = zeros([size(I,1) size(I,2) 3 nframes], class(I));

for k = 1 : nframes
    singleFrame = read(trafficObj, k);

    % Convert to grayscale to do morphological processing.
    I = rgb2gray(singleFrame);

    % Remove dark cars.
    noDarkCars = imextendedmax(I, darkCarValue);

    % Remove lane markings and other non-disk shaped structures.
    noSmallStructures = imopen(noDarkCars, sedisk);

    % Remove small structures.
    noSmallStructures = bwareaopen(noSmallStructures, 150);

    % Get the area and centroid of each remaining object in the frame. The
    % object with the largest area is the light-colored car.  Create a copy
    % of the original frame and tag the car by changing the centroid pixel
    % value to red.
    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
implay(taggedCars, frameRate);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -