Matlab:通过复制后备存储/后端缓冲区来快速捕获图像?

时间:2013-06-02 08:13:13

标签: matlab graphics real-time screen-capture double-buffering

我使用的是版本R2007a。

首先是一点背景:我正在创建一个工具,可以根据实时采集的数据累积散点图。当点数足够大时,图形刷新无法跟上传入的数据,所以我使用'painters'并将'EraseMode'设置为'none'并简单地执行set(obj,'xdata',...,'ydata',...) 1}}更新绘图点位置。这很好用。

顺便提一下,我发现了一个很好的技巧:通过打开双缓冲,MATLAB总是在内存中有一个图像副本,所以即使窗口被隐藏或最小化,点也会累积在图像中!

现在我想拍摄每张图片来制作一部电影。我已经看到了使用getframe()addframe()和未记录的hardcopy()的各种解决方案。这些都重绘了图形,旧的点丢失了,但这实际上是我可以在后处理中解决的问题。我的问题是这些功能对于数据采集速率来说太慢了。有了tic / toc,我找到了

tic, getframe(h); toc - 0.13 sec
tic, addframe(h); toc - 0.15 sec
tic, hardcopy(h,'-Dpainters','r0'); toc - 0.07 sec

我看到hardcopy()做了'renderer'设置为'painters'的不同之处,但即使我能找到如何使用它的输出,它仍然太慢。< / p>

但是在启用双缓冲的情况下,图像已经位于后备存储/后备缓冲区中。制作一份副本会非常快。那里的任何黑客都可以弄清楚如何获得指向后备存储的指针并制作它的副本吗?

由于

0 个答案:

没有答案