【问题标题】:Psychopy: draw all images from a list at oncePsychopy:一次从列表中绘制所有图像
【发布时间】:2016-12-13 14:38:30
【问题描述】:

我有一个包含 12 张图片的列表。它们都有不同的位置(也就是说,它们根本不重叠)。我想一次把它们都画出来。换句话说,我想在屏幕上同时看到所有 12 张图片。到目前为止,我只得到了这个:

    lines = [line1,line2,line3,line4,line5,line6
            line7,line8,line9,line10,line11,line12]

    for i in range(12):
        lines[i].draw()

但是,当然,在我按下任意键之后,这段代码一次只绘制一张图片。那么有没有办法同时画12张呢?

提前致谢!

【问题讨论】:

    标签: python image draw psychopy


    【解决方案1】:

    由于循环的设置方式,您的原始代码一次只绘制一张图像——它(或多或少)说“对于circles 中的每个元素,绘制几件东西并翻转前后缓冲区”。每次缓冲区翻转时,除非您通过win.flip(clearBuffer = False) 告诉它,否则屏幕上的先前内容将被删除。要同时绘制图像,您可以遍历图像列表并在每个元素上调用draw() 方法,例如:

    for i in imglist:
        i.draw()
    
    win.flip()
    

    如果您愿意放弃对单个图像属性的控制,一种方法是使用BufferImageStim。这需要更长的时间来初始化,但可能比绘制单个图像更快(我没有正确计时)。这两种方法都在下面演示。

    from psychopy import visual, event, core
    import urllib
    import random
    
    win = visual.Window([400, 400], fullscr = False)
    
    # picture of a cat, save to file
    urllib.urlretrieve('https://s-media-cache-ak0.pinimg.com/736x/' + 
                       '07/c3/45/07c345d0eca11d0bc97c894751ba1b46.jpg', 'tmp.jpg')
    
    # create five images with (probably) unique positions
    imglist = [visual.ImageStim(win = win, image = 'tmp.jpg',
                                size = (.2, .2),
                                pos = ((random.random() - 0.5) * 2,
                                       (random.random() - 0.5) * 2))
               for i in xrange(5)]
    
    # draw individual images
    for i in imglist: 
        i.draw()
    
    win.flip()
    
    # wait for key press, then clear window
    event.waitKeys()
    win.flip()
    core.wait(0.5)
    
    # create aggregate stimulus (should look identical)
    buffs = visual.BufferImageStim(win, stim = imglist)
    
    buffs.draw()
    win.flip()
    
    event.waitKeys()
    
    core.quit()
    

    【讨论】:

    • 太棒了,两者都工作得很好。感谢您的回答!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2011-04-20
    相关资源
    最近更新 更多