Python pygame奇数序列

Python pygame奇数序列,python,Python,在我当前的Python脚本中,我让它从3倒数到1,然后根据下面的代码拍摄一张照片,这样做4次。然而,它似乎在倒计时之前偷偷地进入了一张图片,而忽略了最后一张,所以最后一次倒计时似乎并不重要 谁能告诉我这是为什么 def start_photobooth(): import config now = time.strftime("%d-%m-%Y-%H:%M:%S") try: for i, filename in enumerate(camera.capt

在我当前的Python脚本中,我让它从3倒数到1,然后根据下面的代码拍摄一张照片,这样做4次。然而,它似乎在倒计时之前偷偷地进入了一张图片,而忽略了最后一张,所以最后一次倒计时似乎并不重要

谁能告诉我这是为什么

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

capture\u 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)

你能用适当的缩进设置python代码的格式吗?我已经更改了缩进,但我的编辑正在等待“同行评审”…@elParaguayo你怎么知道OP代码是这样缩进的?因为如果按照他们发布的格式设置,那么他们将得到缩进错误,而不是他们描述的问题。因此,我刚刚修复了明显的错误。如果OP有不同的缩进,那么它们可以相应地进行更改。哪一行是拍摄照片的实际行?如果是
相机。连续拍摄
,那么它不是要在循环的最开始拍摄照片,而不是在倒计时之后(此时你的循环通过拍摄另一张照片重新开始)拍摄吗?这是有道理的。我相信这是正确的答案。非常感谢。伟大的试一试,如果它不起作用,然后回来解释什么不起作用。它起作用了,但现在它不能正确地吐出“filename”和“{counter:02d}”,导致它不能正确地保存图片。工作得很好!谢谢