subplotで複数​のplotを一つのf​igureウィンドウ​に描写した場合のキャ​プチャと動画保存につ​いて

21 visualizaciones (últimos 30 días)
Shotaro Suzuki
Shotaro Suzuki el 20 de Oct. de 2017
Comentada: Shotaro Suzuki el 21 de Oct. de 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の詳細は伏せていますが,ステップ毎に更新や上書きされるグラフになっています。

Respuesta aceptada

Takuji Fukumoto
Takuji Fukumoto el 20 de Oct. de 2017
movie2aviは最新のVer.では利用できないようでして、古いVer.をお使いでしょうか。
VideoWriterのオブジェクトを使うのが良いかと思います。 使い方についてはサンプルコードを添付しますので、参考にしてください。
仮に画像サイズを変えるときには M.cdata に画像データが格納されていますので、imresizeを使って書き込み前にサイズを変更することもできます。
M=getframe(gcf);
M.cdata = imresize(M.cdata,[600 800])
writeVideo(v,M.cdata)
その際のサイズはピクセルや圧縮/拡大比での指定になります。
  1 comentario
Shotaro Suzuki
Shotaro Suzuki el 21 de Oct. de 2017
回答いただきありがとうございます。
imresizeについては他のtoolboxが必要となるため使用できませんでしたが,
writeVideoを用いて動画作成することができました。

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!