人体姿态检测—mediapipe

本文介绍了如何在Python3.7及以上版本中安装和使用MediaPipe框架,特别关注了人体姿态检测(包括手部关键点和面部特征)的功能,并提供了基本的代码示例,展示了如何在视频流中实时检测关键点并进行绘制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mediapipe的安装使用需要python >= 3.7的版本

# MediaPipe是一个用于构建机器学习管道的框架,用于处理视频、音频等时间序列数据。这个跨平台框架适用于桌面/服务器、Android、iOS和嵌入式设备,如Raspberry Pi和Jetson Nano。

        # mediapipe.solutions.hands # 手部关键点检测

        # mediapipe.solutions.pose # 人体姿态检测

        # mediapipe.solutions.face_mesh# 人脸网状检测

        # mediapipe.solutions.face_detection # 人脸识别

        。。。。。。

人体姿态检测关键点绘制基础代码

import cv2 as cv
import mediapipe as mp
import time

# 2
  #mediapipe.solutions.drawing_utils.draw_landmarks()绘制关键点的连线
mpDraw = mp.solutions.drawing_utils
  #mediapipe.solutions.pose.Pose()姿态关键点检测函数
mpPose = mp.solutions.pose
pose = mpPose.Pose()
# pose = mpPose.Pose(static_image_mode=False, # 静态图模式,False代表置信度高时继续跟踪,True代表实时跟踪检测新的结果
#                    #upper_body_only=False,  # 是否只检测上半身
#                    smooth_landmarks=True,  # 平滑,一般为True
#                    min_detection_confidence=0.5, # 检测置信度
#                    min_tracking_confidence=0.5)  # 跟踪置信度
# # 检测置信度大于0.5代表检测到了,若此时跟踪置信度大于0.5就继续跟踪,小于就沿用上一次,避免一次又一次重复使用模型


pTime = 0 # 设置第一帧开始处理的起始时间
cap = cv.VideoCapture('video/JUMP.mp4')
cv.namedWindow("frame", cv.WINDOW_NORMAL)  # 创建一个可调整大小的窗口
# 或者设置窗口大小
#w,h = 640,480
#cap.set(3, w)
#cap.set(4, h)
while True:
    ret,frame = cap.read()
    frame_RGB = cv.cvtColor(frame,cv.COLOR_BGR2RGB)

    # 3.将图像传给姿态识别模型,返回关键点信息
    res = pose.process(frame_RGB)
    # 查看体态关键点坐标:
    # landmark
    # {
    #     x: 0.33543533086776733
    #     y: 0.7013387680053711
    #     z: 0.45365121960639954
    #     visibility: 0.9783190488815308
    # }
    #print(res.pose_landmarks)
    if res.pose_landmarks:
        # 绘制姿态坐标点,frame为画板,传入姿态点坐标,坐标连线
        #mediapipe.solutions.drawing_utils.draw_landmarks()绘制关键点的连线
        # mpDraw.draw_landmarks(frame,res.pose_landmarks)
        mpDraw.draw_landmarks(frame,res.pose_landmarks,mpPose.POSE_CONNECTIONS)
        for id,lm in enumerate(res.pose_landmarks.landmark):
            h,w,c = frame.shape
            # print('id:',id)
            # print('lm:\n',lm)
            cx,cy = int(lm.x*w),int(lm.y*h)
            cv.circle(frame,(cx,cy),10,(255,0,0),cv.FILLED)
            #cv.LINE_AA:给出了抗锯齿的线条,非常适合曲线。(cv.LINE_AA=16)
            #cv.LINE_4: 4 连通线
            #cv.LINE_8: 8 连通线,默认。
            #cv.FILLED: cv.FILLED=-1
    if ret== True:
        #变量“ cTime”,“ pTime”和“ fps”用于计算每秒的读取帧
        cTime = time.time()#用于获取当前时间的时间戳(从 1970 年 1 月 1 日 00:00:00 到当前时间的秒数)
        fps = 1/(cTime-pTime)
        pTime = cTime

        cv.putText(fr
### MediaPipe 人体姿态检测官方资源 对于希望深入了解MediaPipe人体姿态检测功能的开发者而言,访问官方网站获取最新文档和支持至关重要。MediaPipe人体姿态检测模块提供了强大的工具来实现实时多个人体姿势估计[^1]。 #### 访问MediaPipe官方文档 为了获得最权威的信息,建议直接前往Google Research下的MediaPipe GitHub页面以及对应的API文档部分。具体链接如下: - **GitHub主页**: [https://github.com/google/mediapipe](https://github.com/google/mediapipe) - **官方API文档**: [https://google.github.io/mediapipe/getting_started/install.html](https://google.github.io/mediapipe/getting_started/install.html) 这些页面不仅包含了详细的安装指南,还涵盖了如何利用Python API快速启动并运行各种应用实例,包括但不限于人体姿态检测的功能介绍和使用方法[^2]。 ```python import mediapipe as mp from mediapipe.tasks import python from mediapipe.tasks.python import vision base_options = python.BaseOptions(model_asset_path='path/to/model') options = vision.ImageSegmenterOptions(base_options=base_options, output_category_mask=True) detector = vision.ImageSegmenter.create_from_options(options) ``` 此代码片段展示了初始化MediaPipe图像分割器的一个简单例子,虽然这里展示的是图像分割的具体实现方式,但对于理解如何配置和调用其他组件如人体姿态检测具有参考价值。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值