【问题标题】:Axes background color not rendering properly when exporting videos导出视频时轴背景颜色无法正确渲染
【发布时间】:2012-03-08 13:24:43
【问题描述】:

在 Linux 下运行 Matlab R2011b,我正在使用 VideoWriter 生成视频。我的代码是这样的:

h_fig = figure();
set(h_fig, 'Visible', 'on')
set(h_fig, 'Position', [300,200,898,720]);
h_axs = axes('Parent', h_fig);
set(h_axs,'nextplot','replacechildren');
vidObj = VideoWriter('leadfollow3.avi');
...
for i = 1:n
    h_axs_a = subplot(3,2,[1 2]);
    plot(h_axs_a, x, a_mag_lead, x, a_mag_follow, 'r');
    ...

情节由几个子情节组成。第一个子图渲染得很好,但对于其余部分,轴背景保持灰色而不是白色。更糟糕的是,对于某些帧,它会切换为白色,导致视频中出现烦人的闪烁 (see example video here)。视频编写器循环之外的单个绘图不显示此工件。解决此问题的最佳策略可能是什么?

编辑:在我有机会在 Windows 上尝试此代码后,似乎问题仅限于 Linux。尽管如此,我仍然非常想知道一个可能的解决方案,因为我无法定期访问我可以进行计算的 Windows 框。

【问题讨论】:

  • 在 linux 上,我更喜欢将每一帧导出为 png 并使用 ffmpeg 进行压缩。
  • 这似乎是一个共同的主题......我尝试了这种方法,它有点慢,导致帧率不正确;我想我得再试一次。
  • 我更喜欢另存为 jpge,并使用可笑的命令 cat *.jpg > out.mjpeg 创建一个 mjpeg - 然后您可以使用 ffmpeg 将其转换为您想要的。与@Memming 相同的故事,但我从 mjpeg 开始的 ffmpeg 比试图传递疯狂的论点要好。
  • +1 表示@Memming 的建议。我还花了一些时间从 Matlab 导出视频,最后最简单的解决方案是导出单个帧并使用另一个程序创建视频。 (在我的例子中是 Quicktime。)另外,跳舞很棒!

标签: matlab


【解决方案1】:

您错过了将图形转换为图像并将其发送到 VideoWriter 的关键代码行,因此很难提供太多帮助。但是,如果您还没有这样做,我建议您使用 export_fig 来完成此任务。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2015-10-18
    • 1970-01-01
    相关资源
    最近更新 更多