Python 媒体识别包 Mediapipe - 面网格(FaceMesh)

面部网格(FaceMesh)

import cv2
import mediapipe as mp

mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
mp_face_mesh = mp.solutions.face_mesh

with mp_face_mesh.FaceMesh(
    static_image_mode=False,
    max_num_faces=20,
    min_detection_confidence=0.7,
    min_tracking_confidence=0.7
) as face_mesh:

    drawing_spec = mp_drawing.DrawingSpec((255, 0, 255), 1, 1)
    cap = cv2.VideoCapture(0)

    while True:
        success, img = cap.read()
        if success:
            results = face_mesh.process(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

            if results.multi_face_landmarks is None:
                continue

            for face in results.multi_face_landmarks:
                print("face: ", face)
                mp_drawing.draw_landmarks(
                    image=img,
                    landmark_list=face,
                    connections=mp_face_mesh.FACEMESH_TESSELATION,
                    landmark_drawing_spec=None,
                    connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_tesselation_style()
                )
                mp_drawing.draw_landmarks(
                    image=img,
                    landmark_list=face,
                    connections=mp_face_mesh.FACEMESH_CONTOURS,
                    landmark_drawing_spec=None,
                    connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_contours_style()
                )
            cv2.imshow('face mash', img)

            if cv2.waitKey(1) > 0:
                break

    cap.release()

其它功能