- 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 个现有测试全过无回归
43 lines
1.8 KiB
Python
43 lines
1.8 KiB
Python
"""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
|