import mediapipe as mp import numpy as np import cv2 mp_face_mesh = mp.solutions.face_mesh face_mesh = mp_face_mesh.FaceMesh(static_image_mode=False, # False处理视频,True处理单张图片 max_num_faces=1, refine_landmarks=True, min_detection_confidence=0.5, min_tracking_confidence=0.5) # 静态图片不用设置 # 构建绘图对象 mp_drawing = mp.solutions.drawing_utils mp_drawing_styles = mp.solutions.drawing_styles # 开启摄像头 cap = cv2.VideoCapture(0) while True: # 读取一帧图像 ret, img = cap.read() height, width, channels = np.shape(img) img_RGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) # 特征点提取 results = face_mesh.process(img_RGB) if results.multi_face_landmarks: for face_landmarks in results.multi_face_landmarks: # 绘制人脸网格 mp_drawing.draw_landmarks(image=img, landmark_list=face_landmarks, 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_landmarks, connections=mp_face_mesh.FACEMESH_CONTOURS, landmark_drawing_spec=None, connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_contours_style()) # 绘制瞳孔轮廓 mp_drawing.draw_landmarks(image=img, landmark_list=face_landmarks, connections=mp_face_mesh.FACEMESH_IRISES, landmark_drawing_spec=None, connection_drawing_spec=mp_drawing_styles.get_default_face_mesh_iris_connections_style()) # 绘制人脸关键点 # if face_landmarks: # for i in range(478): # pos_x = int(face_landmarks.landmark[i].x * width) # pos_y = int(face_landmarks.landmark[i].y * height) # cv2.circle(img, (pos_x, pos_y), 3, (0, 255, 0), -1) cv2.imshow('faces', img) key = cv2.waitKey(1) if key == ord('q'): break cap.release()
mediapipe不同颜色人脸关键点检测
最新推荐文章于 2024-05-29 09:13:57 发布