在我当前的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
答案 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)