用Octave函数替换“hardcopy”

时间:2013-08-16 15:33:32

标签: matlab image-processing frame octave video-processing

我正在尝试在Octave中创建一些视频。我有一个matlab文件,可以做我想要的,但我试图让它在Octave中工作。基本上函数'hardcopy'是在这段代码中使用的未记录的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);

是否有人知道如何替换硬拷贝功能?

1 个答案:

答案 0 :(得分:1)

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

要获得更高效的帧抓取解决方案,您必须转到OpenGL(这是hardcopy正在做的事情)。 This thread提出了一些起点,但可能需要编写C / C ++代码。