如何在MATLAB中计算水平(或垂直)投影?

时间:2018-07-15 18:30:00

标签: matlab image-processing video-processing

我正在从视频(car1.mp4)中提取帧(5帧)。之后,显示行数(和列数)。 然后计算每一帧的行和列的像素值之和。最后,在列(或行)数与幅度之间绘制图形。下面是我的代码:

clear all
close all
clc

video=VideoReader('car1.mp4');
numFrames = video.NumberOfFrames;

for i = 1:1:5
    frames = read(video,i);
    imwrite(frames,['image' int2str(i), '.jpg'])
    frames = imresize(frames,[100 150]);

    sz = size(frames);
    numRows = sz(1);
    disp(numRows)
    numCols = sz(2);
    disp(numCols)

    rm = numRows*255;
    for j = 1:numRows
        sumr(j)=0;
        for k = 1:numCols
            pixels1 = impixel(frames,k,j);
            sumr(j)=sumr(j)+pixels1(1);
        end
    end
    s1 = rm./sumr;
    plot(s1)
    xlabel({'Horizontal Projection','(no. of columns)'})
    ylabel('Magnitude')

    rc = numCols*255;
    for u = 1:numCols
        sumc(u)=0;
        for v = 1:numRows
            pixels2 = impixel(frames,v,u);
            sumc(u)=sumc(u)+pixels2(1);
        end
    end
    s2 = rc./sumc;
    plot(s2)
    xlabel({'Vertical Projection','(no. of rows)'})
    ylabel('Magnitude')

 end

主要问题是,从视频中提取了五帧,但仅显示一帧的输出(投影与幅度之间的关系图)。我正在使用for循环,以便显示每个帧的输出(投影与幅度之间的关系图),但未显示。还有另一个问题是为什么它只显示一个投影,即水平投影或垂直投影?

提前感谢:)

0 个答案:

没有答案