Психопия: Масштабирование всех объектов визуального изображения одновременно

Я провожу эксперимент в 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 приписывать.

Другие вопросы по тегам