【问题标题】:Making a fullscreen movie in MATLAB在 MATLAB 中制作全屏电影
【发布时间】:2012-08-19 14:51:02
【问题描述】:

所以我试图在 MATLAB 上制作一部电影,其中包含特定位置的一些灰色圆圈,其中一个圆圈在整个过程中从黑色变为白色。但是我不能让它只以正确的分辨率在整个屏幕上记录图像,而不是在图形窗口中显示它。到目前为止,这是我所得到的:

h=ones(1080,1920);
trap1=.5*circ(1920,1080,55,532,534,2);
trap2=.5*circ(1920,1080,55,528,798,2);
pcf=circ(1920,1080,18,1520,504,2); %Makes the circles


for ii=1:256
    pcfl=pcf*(ii-1)/255; %Steps through greylevels
    m=h.*(trap1+trap2+pcfl); %Make everything but the circles black    
    hfig=imshow(m); %Display image
    colormap('gray') %This is probably unnecessary
    mov(ii)=getframe(gcf);
end

myVideo = VideoWriter('trapmov.avi');
open(myVideo);
writeVideo(myVideo,mov)
close(myVideo)

我发现 thisthis 似乎接近我想要的(尤其是第二个),但我对 java 的了解还不够,无法从第一个制作电影,第二个不起作用,因为它声称图像分辨率不是 1920x1080 - 我认为这是因为 MATLAB 在函数有机会“得到它”之前对其进行了缩放。

我可以通过保存循环的每次迭代中的图像并从中制作一个 .gif 来使其工作,但我不确定如何让它全屏显示,它会很多更好地能够使用 VLC 控制播放。

还有一些方法可以用普通图来做到这一点:

set(hfig,'Units', 'Normalized', 'OuterPosition', [0 0 1 1]);

但这仅适用于使用绘图命令创建的对象,而不是 image/imshow。

编辑:好的,我放弃了,只是制作了一个 .gif,它可以在 chrome 的全屏模式下工作,但是解决这个问题仍然很好,因为知道如何做似乎是一件相当有用的事情。

【问题讨论】:

  • 其实现在我已经想多了

标签: image matlab fullscreen movie


【解决方案1】:

我会使用psychtoolbox 来做到这一点。这是一个比 Matlab 的图形类更合适的起点。该软件包是为 Matlab 构建的,并带有许多可以轻松更改以生成刺激的演示。

如果要生成电影,可以使用 psychtoolbox 抓取全屏帧

imageArray = Screen('GetImage', wPtr, [0 0 1024 768]);

其中 wPtr 是指向您创建的窗口的指针,向量是屏幕尺寸。你可以在这个here找到更多细节

如果你正在做行为测试或心理物理学……我真的会坚持使用 psychtoolbox 并忽略 VLC。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-12
    • 2015-01-22
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 2017-03-17
    相关资源
    最近更新 更多