Fotos tiradas de duas em duas ao invés de uma em uma

Na minha aplicação de reconhecimento facial utilizo a biblioteca time para contar 3 segundos ao detectar o rosto e os olhos de uma pessoa para em seguida tirar uma foto. Assim que detectados eu tiro uma foto e zero o contador. Porém( não consigo achar o por que) na minha lógica as fotos estão sendo tiradas de duas a duas. Exemplo do print:

Foto 1 tirada!
Foto 2 tirada!
#passam 3 segundos
Foto 3 tirada!
Foto 4 tirada!

i=1
inicio = time.clock() # inicia o timer

while (True):
    segs = (time.clock() - inicio)  # conta os segundos
    conectado, imagem = cam.read()
    facesDetectadas = classificador.detectMultiScale(imgcinza, scaleFactor=1.5, minSize=(100, 100))
    for (x, y, l, a) in facesDetectadas: 
        olhos = classificadorEye.detectMultiScale(rostoCinza)
        for (ox, oy, ol, oa) in olhos:    
            if cv2.waitKey(1) and segs > 3 and np.average(imgcinza) > 110:
                imgface = cv2.resize(imgcinza[y:y + a, x:x + l], (220, 220))
                cv2.imwrite("fotos/pessoa." + str(id[0][0]) + "." + str(i) + ".jpg", imgface)
                print("Foto " + str(i) + " tirada")
                i += 1
                inicio = time.clock()  # comeca contar novamente
    cv2.imshow("Tela", imagem)
    cv2.waitKey(1)
    if (i > 25):
        break
print("Fotos tiradas com sucesso")

Quando você atualiza a variável inicio, o valor de segs não é alterado como consequência. O if testa se segs é maior que 3, e segs não é atualizado dentro do for.

1 curtida

Era isto mesmo cara, muito obrigado!