Как обнаружить ориентиры нескольких лиц, используя модели OpenCV и Tensorflow? - PullRequest
1 голос
/ 16 февраля 2020

Я хотел бы спросить, как я могу обнаружить ориентиры глаз больше, чем лицо в режиме реального времени, используя OpenCV и Tensorflow. Так что у меня есть обученная замороженная модель, которая может предсказать ориентиры области глаза Я успешно обнаружил ориентиры на одном лице, используя скрипт python с библиотекой OpenCV, также скрипт обнаруживает несколько лиц. Но ориентиры нарисованы только на одном лице.

Как можно получить ориентиры нескольких обнаруженных лиц?

    cam=cv2.VideoCapture('C:\\Users\\User\\cnn-facial-landmark\\vidtest.mp4')
    while True:
        # Read frame
        frame_got, frame = cam.read()
        if frame_got is False:
            break
        frame = frame[0:480, 300:940]
        frame_cnn = frame.copy()

        # CNN benchmark.
        facebox = extract_face(frame_cnn)
        if facebox is not None:
            face_img = frame[
                facebox[1]: facebox[3],
                facebox[0]: facebox[2]]

            # Detect landmarks
            face_img = cv2.resize(face_img, (INPUT_SIZE, INPUT_SIZE))
            face_img = cv2.cvtColor(face_img, cv2.COLOR_BGR2RGB)
            img=np.array(face_img).reshape(1,INPUT_SIZE,INPUT_SIZE,3)
            landmarks = detect_marks(img, sess, detection_graph)

            # Visualization of the result.
            origin_box_size = facebox[2] - facebox[0]
            for mark in landmarks:
                mark[0] = facebox[0] + mark[0] * origin_box_size
                mark[1] = facebox[1] + mark[1] * origin_box_size
                cv2.circle(frame_cnn, (int(mark[0]), int(
                    mark[1])), 1, (255, 255, 255), -1, cv2.LINE_AA)
        cv2.imshow("Preview", frame_cnn)
        writer.write(frame_cnn)
        if cv2.waitKey(30) == 27:
            break

    sess.close()


if __name__ == '__main__':
    main()

...