基于MediaPipe的人体33个关键点坐标解析(BlazePose)

前言

什么是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)#BGR转RGB

关键点检测结果

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列,如下图所示
在这里插入图片描述


免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空