在Matlab中,写入图像以AVI,而不使用VideoWriter显示(In Matlab, wri

2019-07-04 13:42发布

我试图写一个循环内的图像,以AVI文件。 现在,我使用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?

另一个相关的问题:当我运行我的代码,好像我抓住我的屏幕,而不是图; 我最近更换电脑,而这只是开始在新的计算机发生。 有没有人有一个线索,为什么这可能是?

谢谢,Aviram

Answer 1:

我设法找到经过一番搜索的解决方案。 我使用硬拷贝功能纳入文成图像数据,然后使用im2frame我可以把它变成一个格式适合与VideoWriter使用。 这似乎很好地工作:

      orig_mode = get(hfig, 'PaperPositionMode');
      set(hfig, 'PaperPositionMode', 'auto');
      cdata = hardcopy(hfig, '-Dzbuffer', '-r0');
      set(hfig, 'PaperPositionMode', orig_mode);
      currFrame = im2frame(cdata);


Answer 2:

即使这不是相对于VideoWriter回答你的问题,也许是帮助。

当创建与MATLAB的视频,我通常会输出一系列JPEG的或png年代。 我甚至不碰在MATLAB视频功能。 然后,我用MEncoder的 (这是MPlayer的项目的一部分),用于车削图像串联成一个视频。 通过这样做,可以规避很多MATLAB相关事项,并得到更好的视频文件。



文章来源: In Matlab, writing images to AVI without displaying using VideoWriter