subplotで複数のplotを一つのfigureウィンドウに描写した場合のキャプチャと動画保存について
26 views (last 30 days)
Show older comments
Shotaro Suzuki
on 20 Oct 2017
Commented: Shotaro Suzuki
on 21 Oct 2017
subplotで3つのplotを一つのfigureで描写しました。
このfigureウィンドウを1ステップごとにキャプチャし,動画保存したいのですが,下記のようなエラーが表示されます。
========================================================================================
警告: 圧縮タイプに 'None' を使用すると、Indeo5 圧縮方式を使えません。 詳細は、Mathworks Technical Solution 1-4G50RI を参照してください。 エラー: audiovideo.internal.aviwriter/addframe>ValidateFrame (line 283) フレームは 1135 x 945 でなければなりません。
エラー: audiovideo.internal.aviwriter/addframe (line 153) ValidateFrame(aviobj,width, height,dims);
エラー: movie2avi (line 64) avimov = addframe(avimov,mov);
========================================================================================
フレームサイズが1135*945でなければならないということですが,
できれば下記のコードのようにfigureサイズを指定して保存したいと考えています。
指定したfigureサイズでキャプチャ,保存の仕方をご存知の方がいらっしゃいましたらご教授願います。
for t=1:time
fig=figure;
fig.Units='centimeters';
fig.Position=[10,2,30,25];
subplot(2,3,[2,3,5,6])
plot(x1,y1)
subplot(2,3,1)
plot(x2,y2)
subplot(2,3,4)
plot(x3,y3)
M(t)=getframe(gcf);
close
end
movie2avi(M,'plot.avi','fps',5)
都合上plotの詳細は伏せていますが,ステップ毎に更新や上書きされるグラフになっています。
0 Comments
Accepted Answer
Takuji Fukumoto
on 20 Oct 2017
movie2aviは最新のVer.では利用できないようでして、古いVer.をお使いでしょうか。
VideoWriterのオブジェクトを使うのが良いかと思います。 使い方についてはサンプルコードを添付しますので、参考にしてください。
仮に画像サイズを変えるときには M.cdata に画像データが格納されていますので、imresizeを使って書き込み前にサイズを変更することもできます。
M=getframe(gcf);
M.cdata = imresize(M.cdata,[600 800])
writeVideo(v,M.cdata)
その際のサイズはピクセルや圧縮/拡大比での指定になります。
More Answers (0)
See Also
Categories
Find more on オーディオとビデオ in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!