Python: динамическое сохранение неизвестных лиц в распознавании лиц не работает - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть скрипт, который запускается на изображении, распознает лица и возвращает список вроде:

[('Mike', (142, 464, 365, 241)),('Garry', (42, 364, 65, 141)),('unknown', (242, 564, 465, 341))]

Второй кортеж - это ограничивающая рамка распознанных лиц.У меня есть другой скрипт, который использует веб-камеру, распознает лица в кадрах и показывает их в видеопотоке.Я хочу автоматически сохранять «неизвестные» помеченные лица в каждом кадре, когда бы он ни появлялся.Мой код:

from stat_face_recog import runonimage
video_capture = cv2.VideoCapture(0)
while True:
    ret, frame = video_capture.read()
    cv2.imwrite("new.png",frame)
    final_pred = runonimage(img_path = "new.png")
    read_img = cv2.imread("new.png")
    for name, (top, right, bottom, left) in final_pred:        
        cv2.rectangle(frame, (left, top), (right, bottom), (0, 0, 255), 2)
        cv2.rectangle(frame, (left, bottom - 35), (right, bottom), (0, 0, 255), cv2.FILLED)
        font = cv2.FONT_HERSHEY_DUPLEX
        cv2.putText(frame, name, (left + 6, bottom - 6), font, 1.0, (255, 255, 255), 1)
        unknown_counter = 0
        if name == "unknown":
            unknowns_name = "unknown" + str(unknown_counter) + ".png"
            (new_top, new_right, new_bottom, new_left) = (int(0.8 * top), int(1.2* right), int(1.2*bottom), int(0.8*left))
            cv2.imwrite(unknowns_name,read_img[new_top:new_bottom, new_left:new_right])
            unknown_counter += 1
    cv2.imshow('Video', frame)
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break
video_capture.release()
cv2.destroyAllWindows()

Но проблема в том, что он распознает неизвестные фотографии неподготовленных людей, а не спасает эти неизвестные лица.Только одно изображение с именем "unknonw0.png" сохраняется каждый раз.Что не так в моем коде?

1 Ответ

0 голосов
/ 28 сентября 2018

Вы сбрасываете unknown_counter в ноль в цикле for.Поэтому изображение перезаписывается каждый раз.Просто переместите его за пределы петель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...