【问题标题】:How to subtract background from a video in MatlabMatlab如何从视频中减去背景
【发布时间】:2014-02-14 19:11:53
【问题描述】:

我正在尝试检测滚筒皮带上的土豆。我从空带图像创建了平均背景,并希望从视频的每一帧中减去它并播放,但不知道如何实现这一点。

换句话说,我想做这样的事情,但视频的每一帧:

>> Z = imread('mean.jpg');
>> X = imread('beltpotatoes_1.jpg'); 
>> C = Z - X;
>> imshow(C);

我的样本数据:

平均背景(mean.jpg):https://drive.google.com/file/d/0B_M7fjkKw1r3d0o3VHg1dXVFNmc/edit?usp=sharing

avi 文件:https://drive.google.com/file/d/0B_M7fjkKw1r3a3lhdl91bGFLSjQ/edit?usp=sharing

土豆腰带图片(beltpotatoes_1.jpg):https://drive.google.com/file/d/0B_M7fjkKw1r3SURDV19ud1VBQjQ/edit?usp=sharing

【问题讨论】:

    标签: matlab video image-processing video-processing image-segmentation


    【解决方案1】:
    Z = imread('mean.jpg');
    VR=VideoReader('Video.avi');
    NumInFrames=get(VR,'NumberOfFrames');
    
    VW = VideoWriter('new.avi');
    open(VW);
    
    for (frame=1:NumInFrames)
        CDatas(:,:,:)=read(VR,frame) - Z;     
        writeVideo(VW,CDatas);   
    end
    close(VW)
    

    【讨论】:

    • 我在使用 - 运算符“数组尺寸必须匹配二进制数组”时遇到数组尺寸错误
    • 你的 Z rgb 还是灰色?
    • 这对我来说很奇怪。你的 size(read(VR,frame)) 等于 size(Z) 吗?
    • 不确定... 那是Z的大小
    • 出现错误是因为 avi 中的帧大小与 Z 不同。尝试输入 [m,n,p]=size(read(VR,frame));,然后将 Z 调整为 [ m,n,3] 以及 (p=3)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 2016-02-27
    • 2019-09-15
    • 1970-01-01
    相关资源
    最近更新 更多