Психопия: Масштабирование всех объектов визуального изображения одновременно
Я провожу эксперимент в Psychopy 1.85.1.
Задача будет выполняться на мониторе 1920 x 1080 (т.е. с соотношением сторон 16:9).
Вместо того, чтобы изменять размер каждого отдельного объекта визуального изображения, я использую следующее:
some_obj.size *= [0.6,1]
Я бы предпочел использовать одну строку кода, которая просто повсеместно изменяет параметры размера всех визуальных объектов, чтобы учесть искажение, вызванное соотношением 16:9.
Какие-либо предложения?
РЕДАКТИРОВАТЬ: Ниже приведен пример растяжения, вызванного по умолчанию психопии в соотношении 4:3 и соответствующего изображения. Слева - то, что происходит, когда размер изображения не изменяется, справа - то, что происходит, когда размер изображения изменяется, как показано выше.
Окно для эксперимента создается:
myWin = visual.Window(size = (1200,675), fullscr = False,
winType = 'pyglet', color = 'white')
Изображения круга, как они появляются выше, и созданы:
testCircleL = visual.Circle(myWin, fillColor = 'lightskyblue', lineColor = 'lightskyblue', units = 'norm',
radius = 0.5, pos=(-.50,0.15))
testCircleR = visual.Circle(myWin, fillColor = 'lightskyblue', lineColor = 'lightskyblue',
radius = 0.5, pos=(0.5,0.15)); testCircleR.size *= [0.6,1]
1 ответ
Как отметил Майк в комментариях, если проблема заключается в поддержании пропорций, используйте height
, pix
(пикселей) или deg
в качестве единиц в окне, например, myWin = visual.Window(units='pix')
, Обратите внимание, что для deg
, вы должны ввести некоторые меры расстояния в Центре мониторинга, чтобы он работал. Также обратите внимание, что вам придется изменить масштаб чисел в вашем скрипте. Например, радиус 0,5 "норм" велик, а радиус 0,5 пикселя едва покрывает один пиксель.
Если вы действительно хотите масштабировать много стимулов одновременно, вы, вероятно, сделаете это в цикле:
# Set up many visual objects
stim1 = visual.Circle(myWin)
stim2 = visual.ImageStim(myWin)
stim3 = visual.GratingStim(myWin)
# Scale multiple visual objects
for this_stim in [stim1, stim2, stim3]:
this_stim.size *= [0.6, 1]
Конечно, это работает только для стимулов с size
приписывать.