Files
hair/face_analysis/face_mesh_landmarks.py
T
xsl ae47472a63 feat(接口1/5/6): 返回数据新增 left_position/right_position(MediaPipe 21/251号点)
- face_mesh_landmarks.py: 加常量 LEFT_POSITION=21 / RIGHT_POSITION=251
- measure.py: MeasureResult 收 landmarks/宽高, to_response 顶层输出两点(原图像素 {x,y}, 与 landmarks 同格式)
- measure_face 透传 landmarks(签名不变, 6处调用零改动); __init__ 用 None 默认值守卫向后兼容
- 三接口自动生效: 接口1/6 在 data 顶层, 接口5 在 face_measure 对象里(复用同一 to_response)
- 实测坐标左右镜像合理, 44 个现有测试全过无回归
2026-07-24 00:52:14 +08:00

43 lines
1.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
"""MediaPipe Face Mesh 关键点索引常量(四庭七眼测量用)。
MediaPipe Face Mesh 对 468 个点按固定拓扑编号;开启 refine_landmarks=True 后
额外输出 10 个虹膜点(索引 468–477),总计 478 点。本模块集中定义本接口
所需的全部索引,避免散落在各处的魔数。详见技术方案 §2。
"""
# --- 四庭纵向中轴关键点 ---
GLABELLA_9 = 9 # 眉间 / glabella(上点)
GLABELLA_151 = 151 # 眉间 / glabella(下点),与 9 取中点作为眉心
NOSE_BOTTOM = 94 # 鼻翼下缘 / subnasale(人中顶部)
CHIN_TIP = 152 # 下巴尖 / menton(下颌最低点)
# --- 七眼横向关键点 ---
LEFT_EYE_OUTER = 33 # 左眼外角
LEFT_EYE_INNER = 133 # 左眼内角
RIGHT_EYE_INNER = 362 # 右眼内角
RIGHT_EYE_OUTER = 263 # 右眼外角
LEFT_CHEEK = 234 # 左脸颧弓(脸宽左端)
RIGHT_CHEEK = 454 # 右脸颧弓(脸宽右端)
LEFT_POSITION = 21 # 左脸前侧定位点(脸颊/耳前区域,与 251 镜像)
RIGHT_POSITION = 251 # 右脸前侧定位点(与 21 镜像)
# --- 鼻尖(solvePnP 用,可选) ---
NOSE_TIP = 1 # 鼻尖(也有用 4 的版本)
NOSE_TIP_ALT = 4
# --- 虹膜关键点(refine_landmarks=True 才输出,尺度校准用) ---
IRIS_LEFT_CENTER = 468 # 左眼虹膜中心
IRIS_LEFT_LEFT = 469 # 左虹膜左边缘
IRIS_LEFT_RIGHT = 471 # 左虹膜右边缘
IRIS_RIGHT_CENTER = 473 # 右眼虹膜中心
IRIS_RIGHT_LEFT = 474 # 右虹膜左边缘
IRIS_RIGHT_RIGHT = 476 # 右虹膜右边缘
# --- solvePnP 姿态估计用的 6 点(与通用 3D 头模一一对应,见 pose.py ---
MOUTH_LEFT = 61 # 左嘴角
MOUTH_RIGHT = 291 # 右嘴角
PNP_INDICES = [NOSE_TIP, CHIN_TIP, LEFT_EYE_OUTER, RIGHT_EYE_OUTER, MOUTH_LEFT, MOUTH_RIGHT]
# 含虹膜时的关键点总数
NUM_LANDMARKS_WITH_IRIS = 478