2

ループ内の画像を A​​VI ファイルに書き込もうとしています。現在、私はその目標を達成するために VideoWriter と getframe を使用しています。コードは一般的に次のようになります。

FoodVideo = VideoWriter('tempp.avi');
FoodVideo.FrameRate = 25;
open(FoodVideo);
hh=figure('Visible','off');
for i=1:20
  imshow(example_image{i});
  hold on;
  text(100,100,sprintf('Frame Number: %d',i));
  hold off;
  currFrame = getframe(hh);
  writeVideo(FoodVideo,currFrame);
end
close(FoodVideo);

問題は、getframe が画像を書き込む前に表示することです。テキストを画像データに組み込む方法が思いつかないので、その処理方法を削除しました (im2frame を使用して...)。avifile と addframe を使用できることはわかっていますが、matlab は avifile が削除されると言っているため、VideoWriter を使用したいと考えています... 最初に表示せずに VideoWriter を使用して画像を書き込む方法はありますか?

別の関連する質問: コードを実行すると、図ではなく画面をキャプチャしているように見えます。最近コンピューターを切り替えましたが、これは新しいコンピューターでのみ発生し始めました。それがなぜなのか、誰にも手がかりがありますか?

ありがとう、アビラム

4

2 に答える 2

4

いくつかの検索の後、なんとか解決策を見つけることができました。ハードコピー機能を使用してテキストを画像データに組み込み、im2frame を使用して VideoWriter で使用できる形式に変更できます。これは完全に機能するようです:

      orig_mode = get(hfig, 'PaperPositionMode');
      set(hfig, 'PaperPositionMode', 'auto');
      cdata = hardcopy(hfig, '-Dzbuffer', '-r0');
      set(hfig, 'PaperPositionMode', orig_mode);
      currFrame = im2frame(cdata);
于 2013-03-03T09:30:56.057 に答える
1

これが VideoWriter に関する質問への回答ではない場合でも、役立つかもしれません。

matlab でビデオを作成するときは、通常、一連の jpeg または png をエクスポートします。私はmatlabのビデオ機能にも触れていません。次に、MEncoder (MPlayer プロジェクトの一部) を使用して、一連の画像をビデオに変換します。そうすることで、多くの matlab 関連の問題を回避し、はるかに優れたビデオ ファイルを受け取ることができます。

于 2012-12-12T21:40:52.900 に答える