2016-05-10 11 views
1

私はビデオのすべてのフレームでブロブの周りに長方形をプロットしようとしています。メソッドinsertShapeはうまくいくが、それほどうまくいかない。また、上の動作しているようだMatlabは長方形をスーパーインポーズしません

firstRunFlag = true; 

threshold = 0.18; 
se_erode = strel('square', 3); 
se_dilate = strel('square', 30); 

v = VideoReader('Traffic.mp4');  
figure;  
while hasFrame(v)   
    frame_now = readFrame(v);   
    if (firstRunFlag) 
     frame_prev = frame_now; 
     firstRunFlag = false; 
    end 

    frame_diff = frame_now - frame_prev; 
    frame_diff_grayscale = rgb2gray(frame_diff); 

    bw = im2bw(frame_diff_grayscale, threshold); 
    bw = imerode(bw, se_erode); 
    bw = imdilate(bw, se_dilate); 
    bw = imfill(bw,'holes'); 

    boxes = regionprops(bw, 'BoundingBox'); 
    imshow(frame_now); 

    for i=1:length(boxes) 
     this_box = boxes(i).BoundingBox; 
     rectangle('Position', [this_box(1), this_box(2), this_box(3), this_box(4)], 'EdgeColor', 'r', 'LineWidth', 2) 
    end  
    frame_prev = frame_now; 
end 

...メソッドの矩形は何もしていないようだと、それは.MP4でない.AVIファイルで動作しますが、意志として問題だところ、私は理解していませんフレーム後にフレームを表示するときには表示されません。

+0

矩形の「ホールドオン」はどうですか? – Shai

+0

では、まだ矩形が表示されず、最初のフレームが表示されます – krsnik93

+0

矩形を描画した後に 'drawnow'を追加します。 – Shai

答えて

3

Matlabはプロットを更新することがありません。連続したフレームや直方体のようなものがあります。したがって、drawnowコマンドを使用して、Matlabにプロットの更新を強制すると便利です。

関連する問題