2017-01-11 8 views
0

ムービー内を移動するパーティクルの周りに円を追加したいと思います。私はすべてのフレーム(変数Traj)のパーティクルの座標を与えます。しかし、次のコードでは、フレームごとにパーティクルの上にソリッドの四角形が描画されます。助言がありますか?Matlab - 動画のすべてのフレームに円を追加する

function movie = AurelieCreateMovie3(Filename, Traj) 
    L = 369; 
    color = [1:3]; 
    R = 7; 
    info = imfinfo(Filename); 
    W = info.Width; 
    H = info.Height; 

    movie = uint8(zeros(H,W,3,L)); 

    frame = Traj(:,1); 
    x = round(Traj(:,2)); 
    y = round(Traj(:,3)); 
    L = length(x); %length of this track 
    dt = 0:0.01:2*pi; 

    for k = 1:L 
     movie(:,:,:,k) = imread(Filename,frame(k));  
     x_circle = R.* cos(dt) + x(k); 
     y_circle = R.* sin(dt) + y(k); 
     movie(round(y_circle), round(x_circle), color, k) = 255; 
    end 

    mov = immovie(movie); 
    movie2avi(mov, 'moviefinal', 'compression', 'None', 'fps', 23); 
    implay(mov); 
end 

答えて

0

matrix(rows, columns) = valueと値を割り当て、MATLABは、ちょうど2つのペアワイズ組み合わせを割り当てるのではなく、rowsの要素あらゆる順列columnsを割り当てます。私はあなたのコードistead追加する場合は、代わりにsub2ind

M = reshape(movie(:,:,:,k), [], size(movie, 3)); 
inds = sub2ind(size(M(:,:)), round(y_circle), round(x_circle)); 
M(inds,:) = 255; 
movie(:,:,:,k) = M; 
+0

を用いて線形インデックスに変換したいと思う "映画(ラウンド(y_circle)、ラウンド(x_circle)、色、K)= 255;"それは私にエラーが表示されます:sub2indを使っているエラー範囲外の添え字 – user6275697

+0

@ user6275697あなたが4Dマトリックスにインデックスを作成していた場所を見逃しました。私はその場合に動作するように更新しました。 – Suever

+0

申し訳ありませんが、前と同じエラーが表示されます – user6275697

関連する問題