mediapipe——人体姿势关节点检测(pose模块) 学习笔记(全)

这篇具有很好参考价值的文章主要介绍了mediapipe——人体姿势关节点检测(pose模块) 学习笔记(全)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 官方文档:https://google.github.io/mediapipe/

1.1 解决方案的API,参数

API/参数 说明
STATIC_IMAGE_MOD 默认为 False,将输入图像视为视频流。它将尝试在第一张图像中检测最突出的人,并在成功检测后进一步定位姿势地标。在随后的图像中,它只是简单地跟踪那些地标,而不会调用另一个检测,直到失去对目标的跟踪,可以减少计算和延迟。若为 True,则会对每张输入图像执行人体检测方法,非常适合处理一批静态的、可能不相关的图像。
MODEL_COMPLEXITY 默认为 1,姿势地标模型的复杂度:0、1 、2。地标准确度和推理延迟通常随着模型复杂度的增加而增加。
smooth_landmarks 默认为 True,平滑图像,过滤不同的输入图像上的姿势地标以减少抖动,但如果static_image_mode也设置为 True 则忽略。
upper_body_only 默认为 False,是否只检测上半身的地标。人体姿势共有33个地标,上半身的姿势地标有25个。
enable_segmentation 默认为False。如果设置为 true,除了姿势地标之外,该解决方案还会生成分割掩码。
smooth_segmentation 默认为 True,过滤不同的输入图像上的分割掩码以减少抖动,但如果 enable_segmentation 设置为 False,或者 static_image_mode 设置为 True 则忽略。
min_tracking_confidence 默认为 0.5。来自地标跟踪模型的最小置信值 (0-1之间),用于将被视为成功跟踪的姿势地标,否则将在下一个输入图像上自动调用人物检测。将其设置为更高的值可以提高解决方案的稳健性,但代价是更高的延迟。如果 static_image_mode 为 True,则人员检测将在每帧图像上运行。
min_detection_confidence 默认为 0.5,来自人员检测模型的最小置信值 (0-1之间),高于该阈值则认为检测视为成功。

1.2 绘制关键点和连线

1.2.1 API
  • mediapipe.solutions.drawing_utils.draw_landmarks()

mediapipe.solutions.drawing_utils作为一个模块,可以首先为该模块创建一个别名,再进行具体操作

mp_drawing = mp.solutions.drawing_utils
mp_drawing.draw_landmarks()
1.2.2 函数参数
参数 说明
image 需要画图的原始图片
landmark_list 检测到的关键点坐标(results.pose_landmarks)
connections 连接线,需要把那些坐标连接起来(mpPose.POSE_CONNECTIONS),不传入该参数则不会连接起来
landmark_drawing_spec 坐标的颜色,粗细
connection_drawing_spec 连接线的粗细,颜色等
results = pose.process(image)
mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS)

1.3 姿势关节点跟踪封装模块

  • mp.solutions.pose
mpPose = mp.solutions.pose  # 姿态识别方法,创建一个别名
#调用myPose模块中的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)  # 跟踪置信度

1.4 查看33个关节点坐标

1.4.1 33个关节点参数名

mediapipe——人体姿势关节点检测(pose模块) 学习笔记(全)文章来源地址https://www.toymoban.com/news/detail-452700.html

class PoseLandmark(enum.IntEnum):
  """The 33 pose landmarks."""
  NOSE = 0
  LEFT_EYE_INNER = 1
  LEFT_EYE = 2
  LEFT_EYE_OUTER = 3
  RIGHT_EYE_INNER = 4
  RIGHT_EYE = 5
  RIGHT_EYE_OUTER = 6
  LEFT_EAR = 7
  RIGHT_EAR = 8
  MOUTH_LEFT = 9
  MOUTH_RIGHT = 10
  LEFT_SHOULDER = 11
  RIGHT_SHOULDER = 12
  LEFT_ELBOW = 13
  RIGHT_ELBOW = 14
  LEFT_WRIST = 15
  RIGHT_WRIST = 16
  LEFT_PINKY = 17
  RIGHT_PINKY = 18
  LEFT_INDEX = 19
  RIGHT_INDEX = 20
  LEFT_THUMB = 21
  RIGHT_THUMB = 22
  LEFT_HIP = 23
  RIGHT_HIP = 24
  LEFT_KNEE = 25
  RIGHT_KNEE = 26
  LEFT_ANKLE = 27
  RIGHT_ANKLE = 28
  LEFT_HEEL = 29
  RIGHT_HEEL = 30
  LEFT_FOOT_INDEX = 31
  RIGHT_FOOT_INDEX = 32
1.4.2 查看某一个关节点坐标
results = pose.process(image)#将图像传给姿态识别模型
#用index保存索引,记录序号,lm为具体值
for index, lm in enumerate(results.pose_landmarks.landmark):
            
        	#print(lm)
          	"""
          	x: 0.42567315697669983
			y: 4.285938739776611
			z: 0.28193268179893494
			visibility: 0.001105456380173564
          	"""
            
            
            # 保存每帧图像的宽、高、通道数
            h, w, c = img.shape
            
            # 得到的关键点坐标x/y/z/visibility都是比例坐标,在[0,1]之间
            # 转换为像素坐标(cx,cy),图像的实际长宽乘以比例,像素坐标一定是整数
            cx, cy = int(lm.x * w), int(lm.y * h)
            
            # 打印坐标信息
            print(index, cx, cy)

1.4.3 将xy的比例坐标转换成像素坐标
  • 由于直接生成的坐标数值太小,可以将其转化为图片的像素大小单位
# 保存每帧图像的宽、高、通道数
h, w, c = img.shape
            
# 得到的关键点坐标x/y/z/visibility都是比例坐标,在[0,1]之间
# 转换为像素坐标(cx,cy),图像的实际长宽乘以比例,像素坐标一定是整数
cx, cy = int(lm.x * w), int(lm.y * h)

1.5 查看FPS

  • FPS:画面每秒传输的帧数
1.5.1 查看FPS
#循环之前pTime初始化为0
#每一次循环:
cTime = time.time() #处理完一帧图像的时间
fps = 1/(cTime-pTime)#即为FPS
pTime = cTime  #重置起始时间
1.5.2 在图片上显示FPS
# 在视频上显示fps信息,先转换成整数再变成字符串形式,文本显示坐标,文本字体,文本大小
cv2.putText(img, str(int(fps)), (70,50), cv2.FONT_HERSHEY_PLAIN, 3, (255,0,0), 3)  

到了这里,关于mediapipe——人体姿势关节点检测(pose模块) 学习笔记(全)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 3D人体骨架检测(mediapipe)

    m 在本教程中,我们将学习如何使用python中的mediapipe库进行实时3D骨架检测。 首先,我们得用pip下载下来我们需要用到的模组: 这个工具不仅得到了谷歌的支持,而且Mediapipe中的模型也被积极地用于谷歌产品中。因此,这个模组,超级牛皮。 现在,MediaPipe的姿势检测是高保真

    2024年02月02日
    浏览(42)
  • Mediapipe人体骨架检测和实时3d绘制——Mediapipe实时姿态估计

    大约两年前,基于自己的理解我曾写了几篇关于Mediapipe的文章,似乎帮助到了一些人。这两年,忙于比赛、实习、毕业、工作和考研。上篇文章已经是一年多前发的了。这段时间收到很多私信和评论,请原谅无法一一回复了。我将尝试在这篇文章里回答一些大家经常问到的问

    2024年02月03日
    浏览(58)
  • MediaPipe人体姿态、手指关键点检测

    Mediapipe是google的一个开源项目,用于构建机器学习管道 提供了16个预训练模型的案例:人脸检测、Face Mesh、虹膜、手、姿态、人体、人物分割、头发分割、目标检测、Box Tracking、Instant Motion Tracking、3D目标检测、特征匹配、AutoFlip、MediaSequence、YouTube-8M 肢体识别本质上还是分类

    2024年02月08日
    浏览(56)
  • MediaPipe之人体关键点检测>>>BlazePose论文精度

    BlazePose: On-device Real-time Body Pose tracking BlazePose:设备上实时人体姿态跟踪 论文地址:[2006.10204] BlazePose: On-device Real-time Body Pose tracking (arxiv.org) 主要贡献: (1)提出一个新颖的身体姿态跟踪解决方案和一个轻量级的身体姿态估计神经网络,同时使用了热图(heatmap)和对关键点坐标

    2024年02月06日
    浏览(74)
  • yolov8-pose:在yolov8上添加人体关键点检测

        最近因为工作关系接触了yolo-pose,1月份yolov8也出来了,就想着能不能在yolov8上也加上pose分支,也算加深对网络的认识。     yolov8在数据处理上也考虑了keypoints的,所以数据处理部分不用太多的修改,主要修改了Detect类、Loss类。     Detect类:__init__方法中加入nkpt以及c

    2024年02月11日
    浏览(44)
  • 基于python使用OpenCV和MediaPipe通过人体姿态检测实现对标准的仰卧起坐数量的计量(三)

    先来看一下main.py的代码 import cv2 import numpy as np import PoseModule as pm   cap = cv2.VideoCapture(\\\'10.mp4\\\') detector = pm.poseDetector() count = 0 dir = 0   while True:     success, img = cap.read()     img = cv2.resize(img, (400, 300))     img = detector.findPose(img, False)     lmList = detector.fi

    2024年04月16日
    浏览(59)
  • Mediapipe实战——导出身体节点坐标并用TensorFlow搭建LSTM网络来训练自己的手势检测模型再部署到树莓派4B

    一、前言   在YouTube上看到up主——Nicholas Renotte的相关教程,觉得非常有用。使用他的方法,我训练了能够检测四种手势的模型,在这里和大家分享一下。   附上该up主的视频链接Sign Language Detection using ACTION RECOGNITION with Python | LSTM Deep Learning Model   视频的代码链接htt

    2024年02月02日
    浏览(40)
  • 人体姿态估计技术的理解(Human Pose Estimination)

    本人毕设题目是人体姿态估计技术的相关课题,本人按照自己对人体姿态估计技术的学习和理解进行论述,如有不足,请大家指正!!! “姿势估计?……姿势这个词对不同的人可能有不同的含义,但我们不是在讨论阿诺德的经典作品、奥林匹亚或选美表演。那么,姿势估计

    2024年02月11日
    浏览(48)
  • 基于mediapipe的人体33个关键点坐标(BlazePose)

    BlazePose是一种轻量化的卷积神级网络架构,适用于单人的关键点检测,在人体身上标注33个关键点,在单个中层手机CPU上的执行速度要比OpenPose在20核桌面CPU[5]上快25-75倍。 33个关键点如下图所示 导入库 导入模型 读入图像 关键点检测结果 此时会输出关键点检测结果,如下图所

    2024年02月12日
    浏览(37)
  • WinUI(WASDK)使用MediaPipe检查人体姿态关键点

    之前有用这个MediaPipe.NET .NET包装库搞了手势识别,丰富了稚晖君的ElectronBot机器人的第三方上位机软件的功能,MediaPipe作为谷歌开源的机器视觉库,功能很丰富了,于是就开始整活了,来体验了一把人体姿态关键点检测。 这个框架是微软最新的应用开发框架,我是用来开发程

    2024年02月15日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包