【问题标题】:Mediapipe, assign the landmarks to the vertices?Mediapipe,将地标分配给顶点?
【发布时间】:2021-11-09 00:44:13
【问题描述】:

Here 是 mediapipe 用于其面部网格模型的 fbx 格式的面部。它有 468 个顶点。 Here 是索引的可视化。

Here是媒体管道面网格模型的描述。它输出地标位置。

我如何知道哪个地标属于哪个顶点? 例如在搅拌机中。导入 fbx 人脸时,如何获得与 mediapipe 人脸网格模型的界标相同的索引?

【问题讨论】:

标签: python image-processing computer-vision blender mediapipe


【解决方案1】:

似乎带有 fbx 模型的搅拌器中的索引与 mediapipe 面网格解决方案提供的索引相同。这些索引与媒体管道canonical face model uv visualization 中的索引相同。 This answer 提供了通过索引获取地标的示例。

需要启用Developer Extras。在编辑模式下,该选项显示在Viewport Overlays > Developer > Indices 下,如下所示以获取搅拌机中的索引。获取索引的替代选项可以是found here。

我在下面展示了一个示例,其中包含左眼地标索引,因为它们出现在规范的面部网格 uv 可视化中。

指标可视化

代码

代码基于https://google.github.io/mediapipe/solutions/face_mesh.html。

import cv2
import mediapipe as mp
mp_drawing = mp.solutions.drawing_utils
mp_drawing_styles = mp.solutions.drawing_styles
mp_face_mesh = mp.solutions.face_mesh

# For static images:

import glob
IMAGE_FILES = glob.glob('img.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)
    # Convert the BGR image to RGB before processing.
    results = face_mesh.process(cv2.cvtColor(image, cv2.COLOR_BGR2RGB))

    # Print and draw face mesh landmarks on the image.
    if not results.multi_face_landmarks:
      continue
    annotated_image = image.copy()

    landmarks_list = [
        33, 7, 163, 144, 145, 153, 154, 155,
        133, 173, 157, 158, 159, 160, 161, 246
    ]

    for face_landmarks in results.multi_face_landmarks:
      #print('face_landmarks:', face_landmarks)

      print(len(face_landmarks.landmark))
    #   print(face_landmarks.landmark[7])

      for idx in landmarks_list:
        loc_x = int(face_landmarks.landmark[idx].x * image.shape[1])
        loc_y = int(face_landmarks.landmark[idx].y * image.shape[0])
        print(loc_x, loc_y)
        cv2.circle(annotated_image,(loc_x, loc_y), 2, (255,255,255), 2)

    cv2_imshow(annotated_image)

输出

演示笔记本

https://github.com/quickgrid/AI-Resources/blob/master/code-lab/computer_vision/Mediapipe_Python_Holistic_and_Face_Mesh.ipynb

【讨论】:

    猜你喜欢
    • 2021-12-19
    • 2021-12-18
    • 2011-07-12
    • 2022-07-07
    • 1970-01-01
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多