Mediapipe 0.9.1是否支持人脸关键点?FaceLandmarkerOptions为何不存在?
关于Mediapipe 0.9.1获取人脸关键点的解决方案
Mediapipe 0.9.1确实没有vision.FaceLandmarkerOptions这个API——mediapipe.vision是Mediapipe 0.10.0及以上版本才推出的全新视觉任务架构,你的0.9.1版本还停留在旧的mediapipe.solutions体系,人脸关键点功能是存在的,只是API位置不同。
你需要使用旧版的mediapipe.solutions.face_mesh模块来实现,这是0.9.1中对应的人脸关键点检测工具,具体使用示例如下:
import cv2 import mediapipe as mp # 初始化FaceMesh mp_face_mesh = mp.solutions.face_mesh face_mesh = mp_face_mesh.FaceMesh( static_image_mode=True, max_num_faces=1, min_detection_confidence=0.5 ) # 读取图像(示例) image = cv2.imread("your_image.jpg") # 转换为RGB(Mediapipe要求输入RGB格式) image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 处理图像获取结果 results = face_mesh.process(image_rgb) # 提取人脸关键点 if results.multi_face_landmarks: for face_landmarks in results.multi_face_landmarks: # 每个face_landmarks包含468个关键点,遍历获取坐标 for idx, landmark in enumerate(face_landmarks.landmark): # 关键点坐标是归一化的,需要转换为图像实际像素坐标 x = int(landmark.x * image.shape[1]) y = int(landmark.y * image.shape[0]) z = landmark.z # 深度值(可选) print(f"关键点 {idx}: ({x}, {y})") # 释放资源 face_mesh.close()
几个关键说明:
static_image_mode=True适用于单张静态图片,若是视频流可以设为Falsemax_num_faces控制最多检测的人脸数量- 关键点坐标默认是归一化值(0-1范围),需要乘以图像的宽高得到实际像素位置
内容的提问来源于stack exchange,提问作者ckot
相关产品推荐
相关产品推荐

