7

私は自分で matlab を学んでおり、matlab を使用してアニメーション化されたプロットを作成しました。それをビデオ ファイルとして保存したいと考えています。アニメーションを matlab でビデオ ファイルに変換する方法を教えてください。以下は私のコードです。

x=[1:2];
for i=1:25,
m=randi([3,5]);
n=randi([3,5]);
y=[m n];
bar(x,y)
axis equal                
A(i) = getframe;          
end

matlab バージョン 7.8 R2009a

4

4 に答える 4

5

avifileを使用します。

aviobj = avifile('example.avi','compression','None');
x=[1:2];
for i=1:25,
m=randi([3,5]);
n=randi([3,5]);
y=[m n];
bar(x,y)
axis equal        
aviobj = addframe(aviobj,gcf);       
drawnow 
end
viobj = close(aviobj)
于 2012-08-28T11:00:08.123 に答える
3

Matlab の avifile が機能しない場合 (64 ビット OS のコーデックに問題がある可能性があります)、mmwrite を使用します。 http://www.mathworks.com/matlabcentral/fileexchange/15881-mmwrite

それは簡単で、うまくいきます。私はそれを使って *.wmv ファイルを作成しました: mmwrite(filename, frames);

編集:コード例

% set params
fps = 25;
n_samples = 5 * fps;
filename = 'd:/rand.wmv';
% allocate frames struct
fig = figure;
f = getframe(fig);
mov = struct('frames', repmat(f, n_samples, 1), ...
    'times', (1 : n_samples)' / fps, ...
    'width', size(f.cdata, 2), ...
    'height', size(f.cdata, 1));
% generate frames
for k = 1 : n_samples
    imagesc(rand(100), [0, 1]);
    drawnow;
    mov.frames(k) = getframe(fig);
end
% save (assuming mmwrite.m is in the path)
mmwrite(filename, mov);
于 2012-08-28T12:42:48.953 に答える
1

これを行う 1 つの方法は、Figure を画像に印刷し、結果の画像シーケンスをビデオにステッチすることです。ffmpegmencoderは、これを行うための優れたツールです。適切な検索用語を知っている場合は、これを説明するための優れたリソースがいくつかあります。私はこれが好きです

mencoder では、次のようなコマンドで画像をつなぎ合わせることができます。

mencoder "mf://*.jpg" -mf fps=10 -o test.avi -ovc lavc -lavcopts vcodec=msmpeg4v2:vbitrate=800
于 2012-08-28T10:49:29.727 に答える
1

をご覧いただくVideoWriterか、avifile

于 2012-08-28T10:49:39.517 に答える