Python pygame奇数序列

时间:2015-07-28 11:02:25

标签: python

在我当前的Python脚本中,我将它从3倒数到1,然后拍摄照片,你可以从下面的代码中解释,这样做了4次。然而,它似乎在倒数前隐藏在1张图片中,并留下最后一张图片,所以最后的倒计时看起来并不重要。

谁能告诉我为什么会这样?

def start_photobooth():
    import config
    now = time.strftime("%d-%m-%Y-%H:%M:%S")
    try:
        for i, filename in enumerate(camera.capture_continuous(config.images_path + now + '-' + '{counter:02d}.jpg')):
            print "[" + current_time() + "] [PHOTO] Producing " + filename
            surface.fill((0,0,0,0))
            surface.set_alpha(288)
            textSurfaceObj = fontObj.render('', True, red)
            surface.blit(textSurfaceObj, textRectObj)
            pygame.display.update()
            time.sleep(float(config.countdown)) 
            for y in range(3,0,-1):
                surface.fill((0,0,0,0))
                surface.set_alpha(288)
                textSurfaceObj = fontObj.render(str(y), True, red)
                surface.blit(textSurfaceObj, textRectObj)
                pygame.display.update()
                pygame.time.wait(1000)
            if i == total_pics-1:           
                break

1 个答案:

答案 0 :(得分:1)

您的代码将在循环的最开始处拍照,因为此时执行了capture_continuous方法。

然后您的代码将运行倒计时并重新启动循环,此时需要另一张照片。

你的循环真正做的只是:

  • 拍照
  • 倒计时
  • 重复

你希望它是:

  • 倒计时
  • 拍照
  • 重复

因此,您可以将循环的开头更改为:

for i in range(total_pics):

删除代码末尾的if部分(因为现在由for循环处理)并在倒计时后插入一行来拍摄照片。假设这是rasperry pi相机,那么该线将是:

filename = camera.capture("{0}{1}-{2:02d}.jpg".format(config.images_path,now,i))

我不熟悉picamera模块,所以你可能会这样做:

filename = "{0}{1}-{2:02d}.jpg".format(config.images_path,now,i)
camera.capture(filename)