Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MATLAB中计算水平(或垂直)投影?_Matlab_Image Processing_Video Processing - Fatal编程技术网

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

如何在MATLAB中计算水平(或垂直)投影?,matlab,image-processing,video-processing,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' int2s

我正在从视频(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循环,以便它显示每一帧的输出(投影与大小之间的绘图),但不显示。另一个问题是为什么它只显示一个投影,即水平投影或垂直投影


提前感谢:)

您只获得一帧的绘图的原因是,对于每一帧,您首先覆盖sumr,然后覆盖现有图形以进行绘图。然后为每一帧覆盖
sumc
,并覆盖同一图形上的
sumr
绘图。对所有帧重复此操作,只得到一个最终绘图。你到底想要什么结果?您希望每个绘图都在一个单独的图形中,还是在一个子绘图中,或者其他什么?@bicker是的,我希望每个绘图都在一个单独的图形中。您能帮助我吗?然后在每次调用
plot
之前添加一行,上面写着
figure
。不过,您可能需要研究如何命名图形,以便能够区分它们。见@bicker我的主要错误。解决了。