Как я могу выполнить инструкцию Python один раз внутри оператора If - PullRequest
0 голосов
/ 26 марта 2020

Я обновляю программу распознавания лиц Python / OpenCV, поэтому, когда она распознает человека, его имя и время будут сохранены в листах Google. Пожалуйста, проверьте этот код:

    for x, y, w, h in faces:
        cv2.rectangle(img, (x,y), (x+w,y+h), (0,255,0), 2)
        id, confidence = recognizer.predict(gray[y:y+h,x:x+w])

        if confidence > 0:

            id = names[id]
            confidence = "  {0}%".format(round(confidence))

            sheet.append_row([str(id), strftime("%Y-%m-%d %H:%M:%S", gmtime())])

        else:
            id = "Inconnue"
            confidence = "  {0}%".format(round(confidence))

Итак, у меня есть sheet.append_row([str(id), strftime("%Y-%m-%d %H:%M:%S", gmtime())]), который я хочу выполнить только один раз. Когда я выполняю код, он продолжает посылать мое имя на лист, пока я смотрю в камеру.

1 Ответ

0 голосов
/ 26 марта 2020

Вы можете сохранить набор имен, которые вы уже вставили, например:


existing_entries = {}   # set of existing entries
for x,y,w,h in faces:
    cv2.rectangle(img, (x, y), (x + w, y + h), (0,255,0), 2)
    id, confidence = recognizer.predict(gray[y:y+h,x:x+w])

    if confidence > 0:


        id = names['id']
        if id not in existing_entries:
           confidence = "  {0}%".format(round(confidence))

           sheet.append_row([str(id), strftime("%Y-%m-%d %H:%M:%S", gmtime())])
           existing_entries.add(id)   # add recognized entry to existing entries 

    else:
        id = "Inconnue"
        confidence = "  {0}%".format(round(confidence))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...