【问题标题】:Mediapipe FACEMESH_IRISES coordinatesMediapipe FACEMESH_IRISES 坐标
【发布时间】:2022-11-22 18:33:33
【问题描述】:

我正在使用 mediapipe 在静态图像中查找眼睛虹膜的坐标。 我有下一个代码来执行此操作。 最后,我运行 print('', face_landmarks) 并且我拥有所有坐标 x、y、z。 如果我运行 print('',mp_face_mesh.FACEMESH_IRISES) 我只有 Iris 点的索引,如下所示:

frozenset({(475, 476), (477, 474), (469, 470), (472, 469), (471, 472), (474, 475), (476, 477), (470, 471) })

我怎样才能得到坐标而不是每个虹膜点的索引?

from multiprocessing import connection
import cv2
import mediapipe as mp
import sys
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
mp_face_mesh = mp.solutions.face_mesh
IMAGE_FILES = [("pic1.jpg")]
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1)
with mp_face_mesh.FaceMesh(
    static_image_mode=True,
    max_num_faces=1,
    refine_landmarks=True,
    min_detection_confidence=0.5) as face_mesh:
  for idx, file in enumerate(IMAGE_FILES):
    image = cv2.imread(file)
    results = face_mesh.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))
    if not results.multi_face_landmarks:
      continue
    annotated_image = image.copy()
    for face_landmarks in results.multi_face_landmarks:
      mp_drawing.draw_landmarks(
          image=annotated_image,
          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())
      mp_face_mesh

【问题讨论】:

    标签: coordinates mediapipe


    【解决方案1】:

    对于 mediapipe 规范索引,从 0 到 467 是人脸界标,从 468 到 477 是虹膜界标。假设索引 468 和 473 是左右虹膜中心点。你可以得到他们的 3D 坐标

    (lm_left_iris.x, lm_left_iris.y, lm_left_iris.z) = face_landmarks.landmark[468]
    (lm_right_iris.x, lm_right_iris.y, lm_right_iris.z) = face_landmarks.landmark[473]
    

    【讨论】:

      猜你喜欢
      • 2021-07-12
      • 2022-07-07
      • 2022-07-07
      • 2021-08-24
      • 2021-11-09
      • 2014-11-22
      • 2011-02-18
      • 1970-01-01
      • 2013-04-30
      相关资源
      最近更新 更多