Я хотел бы спросить, как я могу обнаружить ориентиры глаз больше, чем лицо в режиме реального времени, используя 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()