如何提取在mediapipe中检测到的人脸的x和y位置?

问题描述 投票:0回答:1

我尝试使用此代码能够实时获取面部位置的 x 和 y 坐标。我从在线mediapipe解决方案获得了代码。 运行此代码时,实际上会检测到面部,并且其所有特征都在显示帧上指示为红点。 我希望能够以整数形式获取面部坐标,以便稍后使用它们通过伺服电机跟踪位置,有什么办法可以做到这一点吗?

文字

# face detection

import cv2
import mediapipe as mp
import time

mp_face_detection = mp.solutions.face_detection
mp_drawing = mp.solutions.drawing_utils


# capture video
cap = cv2.VideoCapture(2)
prevTime = 0

with mp_face_detection.FaceDetection( model_selection=1,
    min_detection_confidence=0.65) as face_detection:
  while True:
    success, image = cap.read()
    if not success:
      print("Ignoring empty camera frame.")
      break


    #Convert the BGR image to RGB.
    image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
    image.flags.writeable = False
    results = face_detection.process(image)

    # Draw the face detection annotations on the image.
    image.flags.writeable = True
    image = cv2.cvtColor(image, cv2.COLOR_RGB2BGR)
    if results.detections:
      for detection in results.detections:
        mp_drawing.draw_detection(image, detection)
        print(detection) # I can get the score, x, y,.. 


    cv2.imshow('BlazeFace Face Detection', image)
    if cv2.waitKey(5) & 0xFF == 27:
      break
cap.release()

我尝试在for循环中打印变量person,我可以清楚地看到其中有x和y坐标,但我未能提取这些特定信息。 关于如何更好地操纵这个变量有什么想法吗? 我将使用检测到的面部数量、它们的位置坐标和置信度。

python opencv variables computer-vision detection
1个回答
1
投票

print(detection)
的结果结构:

label_id: 0
score: 0.8402262330055237
location_data {
  format: RELATIVE_BOUNDING_BOX
  relative_bounding_box {
    xmin: 0.4553905725479126
    ymin: 0.6456842422485352
    width: 0.24106884002685547
    height: 0.32147008180618286
  }
  relative_keypoints {
    x: 0.45961669087409973
    y: 0.7614946961402893
  }
[...]
}

这些字段是

mediapipe.framework.formats.detection_pb2.Detection
类型输出的属性。 我假设面部坐标指的是它的边界框坐标。

您可以像这样访问这些坐标:

relative_bbox = detection.location_data.relative_bounding_box
my_relative_bbox_list = [relative_bbox.xmin,relative_bbox.ymin,relative_bbox.width,relative_bbox.height]
© www.soinside.com 2019 - 2024. All rights reserved.