基于mediapipe的人体33个关键点坐标(BlazePose)

本文介绍BlazePose,一种高效的人体姿态检测模型,能在移动端快速准确地检测出人体33个关键点,并提供了详细的代码实现过程。

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

前言

什么是BlazePose

BlazePose是一种轻量化的卷积神级网络架构,适用于单人的关键点检测,在人体身上标注33个关键点,在单个中层手机CPU上的执行速度要比OpenPose在20核桌面CPU[5]上快25-75倍。

人体33个关键点

33个关键点如下图所示
在这里插入图片描述

33个关键点坐标代码实现

导入库

import cv2
import mediapipe as mp
from tqdm import tqdm
import time
import matplotlib.pyplot as plt
%matplotlib inline

导入模型

mp_pose=mp.solutions.pose
mp_drawing=mp.solutions.drawing_utils
pose=mp_pose.Pose(static_image_mode=True,#选择静态图片还是连续视频帧
                 model_complexity=2,#选择人体姿态关键点检测模型,0性能差但快,2性能好但慢,1介于之间
                 smooth_landmarks=True,#是否选择平滑关键点
                 min_detection_confidence=0.5,#置信度阈值
                 min_tracking_confidence=0.5)#追踪阈值

读入图像

img=cv2.imread('C:\\Users\\123\\Desktop\\2022-6-28.jpg')
img_RGB=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)#BGRRGB

关键点检测结果

results=pose.process(img_RGB)
results.pose_landmarks

此时会输出关键点检测结果,如下图所示
在这里插入图片描述

关键点连接(人体骨架)

mp_pose.POSE_CONNECTIONS

输出如图所示
在这里插入图片描述
求关键点的归一化坐标,可用数字表示

results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ELBOW]
或
results.pose_landmarks.landmark[13]

获取坐标值

results.pose_landmarks.landmark[13].x

求指定关键点像素坐标

h=img.shape[0]
w=img.shape[1]
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ELBOW].x*w
results.pose_landmarks.landmark[mp_pose.PoseLandmark.LEFT_ELBOW].x*h

解析指定关键点的真实物理坐标

results.pose_world_landmarks.landmark[mp_pose.PoseLandmark.NOSE]
或
results.pose_world_landmarks.landmark[23]

将33个关键点坐标汇总

import numpy as np
coords=np.array(results.pose_landmarks.landmark)
#汇总所有点的XYZ坐标
def get_x(each):
    return each.x
def get_y(each):
    return each.y
def get_z(each):
    return each.z
#分别获取关键点XYZ坐标
points_x=np.array(list(map(get_x,coords)))
points_y=np.array(list(map(get_y,coords)))
points_z=np.array(list(map(get_z,coords)))
#将三个方向坐标合并
points=np.vstack((points_x,points_y,points_z)).T

此时points就变成了33行3列,如下图所示
在这里插入图片描述

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值