防止图像在全屏中拉伸以获得心理感受

时间:2014-10-20 19:15:12

标签: python psychopy

这是我第一次使用该软件创建实验。

对于我的实验,我并排呈现两个图像,理想情况下我想在全屏运行此实验但是当我将值设置为true时,图像会变得拉伸。如何修复宽高比以便我可以在不拉伸图像的情况下全屏运行程序?

我正在使用MacBook Pro和PsychoPy编码器。

这是我目前的图片代码:

scale=0.7
faceRGB = visual.ImageStim(win,image='male.jpg', 
mask=None,
pos=(0.0,0.0),
size=(scale,scale))


faceRGBINV = visual.ImageStim(win,image='maleInv.jpg', 
mask=None,
pos=(0.0,0.0),
size=(scale,scale)`

此外,在我的实验中,其中一个图像将被轻微压缩或拉伸。然后参与者将不得不选择更胖的脸。这已经设置好了,当在一个窗口中运行时,图像显示正常,当它们拉伸到适合显示器尺寸时,它就处于全屏模式。

1 个答案:

答案 0 :(得分:1)

默认情况下,PsychoPy使用' norm'作为单位,其大小标准化为窗口尺寸。您可能会遇到以下情况:(1)更改图像的大小;(2)当在默认的800 x 800像素窗口中显示时,图像恰好具有正确的尺寸,但是当您全屏显示时,图像会显得拉伸,因为您的显示器具有另一个长宽比。

如果您不改变图像的大小,PsychoPy会保持正确的宽高比。缩放图像将保留此纵横比,因此这是一个简单的解决方案。例如。在启动ImageStim后添加一行:

scale = 0.7

from psychopy import visual
win = visual.Window(fullscr=True)
faceRGB = visual.ImageStim(win, 'male.jpg')
faceRGB.size *= scale  # scale the image relative to initial size

如果您想直接控制尺寸而不是按比例控制尺寸,请参阅用户列表中的this discussion。我提出了以下解决方案。假设您要设置图像大小,以便scale是沿x- og y轴的最大长度,并按比例缩放另一个轴。用以下内容替换上面的最后一行:

faceRGB.size *= scale / max(faceRGB.size)

乘法保持宽高比如上,右侧是乘法因子以确保scale。如果您希望将此值应用于最小长度而非最大长度,请将max更改为min

注意:您无需设置pos=(0,0)mask=None,因为这是这些参数的默认值。