MediaPipe Face Mesh和MediaPipe Pose 模型介绍

1. MediaPipe Face Mesh

MediaPipe Face Mesh 是一个用于实时面部网格检测的模型,能够在图像或视频中识别并标记面部的468个3D关键点。这些关键点覆盖了面部的各个部位,如眼睛、鼻子、嘴巴等,适用于面部表情分析、虚拟化妆、AR滤镜等场景。

主要特点:提供468个3D关键点,精准捕捉面部细节。

2. MediaPipe Pose

MediaPipe Pose 是一个用于实时人体姿态估计的模型,能够在图像或视频中识别并标记人体的33个3D关键点,涵盖全身主要关节,适用于健身指导、动作捕捉、运动分析等场景。

主要特点:提供33个3D关键点,准确捕捉全身姿态。

以下是使用 MediaPipe Face Mesh 和 MediaPipe Pose 的示例代码,分别展示如何在 Python 中实现面部关键点检测和人体姿态估计。


1. MediaPipe Face Mesh 示例代码

import cv2
import mediapipe as mp

# 初始化MediaPipe Face Mesh
mp_face_mesh = mp.solutions.face_mesh
face_mesh = mp_face_mesh.FaceMesh(static_image_mode=False, max_num_faces=1, refine_landmarks=True, min_detection_confidence=0.5)

# 初始化绘图工具
mp_drawing = mp.solutions.drawing_utils
drawing_spec = mp_drawing.DrawingSpec(thickness=1, circle_radius=1, color=(0, 255, 0))

# 打开摄像头
cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # 将图像转换为RGB格式
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # 处理图像并获取面部关键点
    results = face_mesh.process(rgb_frame)

    # 如果检测到面部关键点,绘制到图像上
    if results.multi_face_landmarks:
        for face_landmarks in results.multi_face_landmarks:
            mp_drawing.draw_landmarks(
                image=frame,
                landmark_list=face_landmarks,
                connections=mp_face_mesh.FACEMESH_TESSELATION,
                landmark_drawing_spec=drawing_spec,
                connection_drawing_spec=drawing_spec
            )

    # 显示结果
    cv2.imshow('MediaPipe Face Mesh', frame)

    # 按下 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

2. MediaPipe Pose 示例代码

import cv2
import mediapipe as mp

# 初始化MediaPipe Pose
mp_pose = mp.solutions.pose
pose = mp_pose.Pose(static_image_mode=False, model_complexity=1, enable_segmentation=False, min_detection_confidence=0.5)

# 初始化绘图工具
mp_drawing = mp.solutions.drawing_utils

# 打开摄像头
cap = cv2.VideoCapture(0)

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # 将图像转换为RGB格式
    rgb_frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)

    # 处理图像并获取姿态关键点
    results = pose.process(rgb_frame)

    # 如果检测到姿态关键点,绘制到图像上
    if results.pose_landmarks:
        mp_drawing.draw_landmarks(
            image=frame,
            landmark_list=results.pose_landmarks,
            connections=mp_pose.POSE_CONNECTIONS,
            landmark_drawing_spec=mp_drawing.DrawingSpec(color=(0, 255, 0), thickness=2, circle_radius=2),
            connection_drawing_spec=mp_drawing.DrawingSpec(color=(255, 0, 0), thickness=2)
        )

    # 显示结果
    cv2.imshow('MediaPipe Pose', frame)

    # 按下 'q' 键退出
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放资源
cap.release()
cv2.destroyAllWindows()

代码说明

  1. Face Mesh

    • 使用 mp.solutions.face_mesh 检测面部关键点。

    • 通过 mp_drawing.draw_landmarks 绘制面部网格。

    • 支持多面部检测(max_num_faces 参数)。

  2. Pose

    • 使用 mp.solutions.pose 检测人体姿态关键点。

    • 通过 mp_drawing.draw_landmarks 绘制姿态连接线。

    • 支持不同模型复杂度(model_complexity 参数)。

  3. 通用部分

    • 使用 OpenCV 捕获摄像头视频流。

    • 按 q 键退出程序。

### 关于MediaPipe人体模型的使用方法 MediaPipe 提供了一套强大的工具来处理人体姿态检测跟踪的任务。具体来说,`MediaPipe Holistic` `MediaPipe Pose` 是两个主要的人体模型解决方案[^2]。 #### MediaPipe Pose `MediaPipe Pose` 可用于实时估计单个人体的关键点位置。它能够识别身体的主要部位(如肩膀、肘部、膝盖等),并返回这些关键点的二维坐标。以下是其基本功能描述: - **输入**: 图像或视频帧。 - **输出**: 身体各部分的关键点及其置信度分数。 - **应用场景**: 运动分析、健身应用、虚拟试衣间等。 可以通过以下方式调用该模块: ```python import cv2 import mediapipe as mp mp_pose = mp.solutions.pose pose = mp_pose.Pose() cap = cv2.VideoCapture(0) while cap.isOpened(): success, image = cap.read() if not success: break # 将图像转换为RGB格式 image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB) # 处理图像以获取姿势标记 results = pose.process(image_rgb) if results.pose_landmarks: # 绘制姿态连接图 annotated_image = image.copy() mp_drawing.draw_landmarks( annotated_image, results.pose_landmarks, mp_pose.POSE_CONNECTIONS) cv2.imshow('Pose', annotated_image) if cv2.waitKey(5) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() ``` 上述代码展示了如何通过摄像头捕获画面并绘制人体骨架[^1]。 #### MediaPipe Holistic 如果需要更全面的信息,则可以选择 `MediaPipe Holistic` 解决方案。此选项不仅涵盖了全身的姿态追踪,还集成了面部网格 (`Face Mesh`) 手部关键点 (`Hands`) 的检测能力。 - **特点**: - 同时支持脸部特征提取、手势捕捉以及整体的身体动作监控。 - 更适合复杂的交互场景或者多模态数据分析项目。 有关更多细节技术规格可以直接查阅官方文档链接。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mosquito_lover1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值