3

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

对于我的实验,我将并排展示两个图像,理想情况下我想全屏运行这个实验,但是当我将值设置为 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)`

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

4

1 回答 1

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

如果您想直接控制大小而不仅仅是按比例控制,请参阅用户列表上的此讨论。我建议了以下解决方案。假设您要设置图像大小,使其scale成为沿 x-og y 轴的最大长度,并按比例缩放另一个轴。将上面的最后一行替换为:

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

乘法保持上述纵横比,右侧是要确保的乘法因子scale。如果您希望它应用于最小长度而不是最大长度,请更改max为。min

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

于 2014-10-20T20:13:57.947 回答