【问题标题】:Pose Detection for squat with count using ML Kit使用 ML Kit 进行带计数的深蹲姿势检测
【发布时间】:2020-12-28 21:34:48
【问题描述】:

如何使用 ML 套件获取实时运动计数和角度?在这里,我检查了https://ai.googleblog.com/2020/08/on-device-real-time-body-pose-tracking.html 的俯卧撑和深蹲运动计数。

我通过以下方法获得角度:

fun getAngle(firstPoint: PoseLandmark, midPoint: PoseLandmark, lastPoint: PoseLandmark): Double {
    var result = Math.toDegrees(atan2(lastPoint.getPosition().y - midPoint.getPosition().y,
            lastPoint.getPosition().x - midPoint.getPosition().x)
            - atan2(firstPoint.getPosition().y - midPoint.getPosition().y,
            firstPoint.getPosition().x - midPoint.getPosition().x))
    result = Math.abs(result) // Angle should never be negative
    if (result > 180) {
        result = 360.0 - result // Always get the acute representation of the angle
    }
    return result
}

我已经从我的角度添加了逻辑,但如果我得到任何正确的方法,我仍然需要帮助。我每次都在做什么检查角度。

我想显示基于用户锻炼的计数和反馈。

【问题讨论】:

  • 我正在处理相同的要求。你能分享你的代码吗?所以它会帮助我

标签: android kotlin google-mlkit pose-detection


【解决方案1】:

您可以尝试以下几种方法:

(1) 你需要让你的用户以某种方式面对摄像头,例如侧向可能是最容易检测下蹲的,而正面可能是最难检测的。你可以尝试一些介于两者之间的东西。此外,相机的高度(在地面上、头部水平等)也会影响角度。

(2)然后可以计算并跟踪身体与大腿的夹角以及大腿与小腿的夹角来判断是否完成了深蹲。

(3)关于反馈,你可以设置一些预期的角度,如果用户的角度小于这个角度,你可以说“蹲得更深”...

(4) 要获得预期的角度,您需要找到一些示例图像并在其上运行检测器以获取它们。

【讨论】:

  • 感谢您分享此内容,我按照您所说的方式进行了操作。你有这方面的演示吗?
  • 我现在没有一些代码示例。下面airal的回答可能会有所帮助。
【解决方案2】:

我做了一个关于深蹲次数的简单演示https://www.youtube.com/watch?v=XKrZV864rEQ

我只是做了三个简单的逻辑判断

  1. 肘部高度高于肩部,否则提示“请双手抱在脑后”
  2. 站直以大腿和小腿的角度来判断,目前效果不好。
  3. 比较腿和肩膀的距离,腿应该有一定比例的肩宽,否则提示“请张开双脚和肩宽” 站立和蹲下都是取人腿长来判断的/5 为最小移动单位,与最后一个坐标的最小距离。因为站着的人与相机的距离会影响坐标比

我的英语很差,大部分句子都是谷歌翻译的

【讨论】:

  • 感谢您提供此信息和 youtube 视频,请您分享演示代码
  • 可以在视频介绍中看到demo code url
猜你喜欢
  • 1970-01-01
  • 2021-08-28
  • 1970-01-01
  • 2019-08-23
  • 2020-05-26
  • 2020-08-27
  • 2011-12-26
  • 1970-01-01
  • 2020-12-26
相关资源
最近更新 更多