2

所以我试图在 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)

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

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

还有一些方法可以用正常的情节做到这一点:

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

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

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

4

1 回答 1

0

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

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

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

其中 wPtr 是指向您创建的窗口的指针,向量是屏幕尺寸。您可以在此处找到更多详细信息

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

于 2012-08-24T12:32:02.683 回答