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")