2014-10-20 63 views
2

這是我第一次使用此軟件創建實驗。防止圖像在全屏顯示時出現變態反應

對於我的實驗,我並排展示兩個圖像,理想情況下,我想以全屏模式運行此實驗,但是當將該值設置爲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

默認情況下,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軸y軸的最大長度,並按比例縮放另一軸。替換的最後一行以上這樣的:

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

乘法保持寬高比如上和右手側是確保scale倍增因子。如果您希望將其應用於最小長度而不是最大長度,請將max更改爲min

注意:您不需要設置pos=(0,0)mask=None,因爲這是這些參數的默認值。

+0

嗨,非常感謝你的回覆。 我對圖像當前代碼讀取這樣的: 規模= 0.7 faceRGB = visual.ImageStim(贏,圖像= 'male.jpg', stim.size * = 0.7#70%原始大小 面膜=無, POS =(0.0,0.0), 大小=(刻度,刻度)) faceRGBINV = visual.ImageStim(WIN,圖像= 'maleInv.jpg', 掩模=無, POS =(0.0,0.0) , size =(scale,scale)) 對不起,如果這看起來很基本,但我在哪裏實現這個新的代碼行? 再次感謝您的時間和幫助。 – 2014-10-20 20:33:58

+0

在問題中提供代碼總是一個好主意,所以請隨時編輯它並使用具體示例進行更新。在這個例子中,''faceRGB''是你的刺激對象,所以''faceRGB.size''是你想要改變的屬性。您可以在初始化後執行此操作,即在調用''visual.ImageStim''之下的行上執行此操作。注意''faceRGB.size''和''visual.ImageStim(size = 4)''是同一個屬性,但是在後一種情況下你不能對它進行操作。在這裏閱讀一些基本的Python語法 - 你也不能在內聯註釋。我稱之爲''imageSize''你稱爲''scale'' – 2014-10-20 21:08:05

+0

我已經更新了我的問題和額外的細節。我目前正在閱讀python語法,但也試圖讓我的實驗儘快運行。我正在努力理解我如何實現你所建議的。這只是我需要改變的地方(規模,規模)嗎? – 2014-10-20 21:29:55