1

我正在尝试在 Octave 中创建一些视频。我有一个 matlab 文件可以做我想做的事,但我正试图让它在 Octave 中工作。基本上,函数“硬拷贝”是此代码中使用的未记录的 matlab 函数,我想用对八度音程友好的东西替换它。

我在这里找到了一个反向解决方案(有人试图使用硬拷贝):http ://www.mathworks.com/support/solutions/en/data/1-3NMHJ5/?solution=1-3NMHJ5

但我在 matlab 和 octave 方面是一个超级新手,所以虽然该解决方案的选项 2 看起来可以工作(我认为 octave 具有 imread 功能)我不知道我的代码要改变什么(我没写,而且,正如我所说,我不知道matlab)。代码是

    % add this frame to movie file
    %mov = addframe(mov,gcf);
    renderer = get(hnd,'renderer');
    if strcmp(renderer,'painters')
        renderer = 'opengl';
    end
    set(hnd, 'Units', 'pixels');
    pixelsperinch = get(0,'screenpixelsperInch');

    frame = hardcopy(hnd, ['-d' renderer], ['-r' num2str(round(pixelsperinch))]);
    addframe(mov,frame);

有谁知道如何将硬拷贝功能换成替代品?

4

1 回答 1

1

这不是一个令人满意的解决方案,但您可以使用更高级别的print命令将单个帧保存到文件中。查看此 PDF 演示文稿中第 91-93 页的部分代码示例。然后可以使用其他工具(例如,此处所做的 ffmpeg)将这些帧组装成电影。

要获得更有效的帧抓取解决方案,您必须使用 OpenGL(这就是hardcopy正在做的事情)。该线程建议了一些起点,但可能需要编写 C/C++ 代码。

于 2013-08-16T17:36:15.900 回答