首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

利用OpenPose实现视频中人体骨骼角度的计算

OpenPose 是一种用于实时多人2D姿态估计的开源库,它能够检测人体关键点并计算出骨骼角度。以下是利用OpenPose实现视频中人体骨骼角度计算的基础概念、优势、类型、应用场景以及可能遇到的问题和解决方法。

基础概念

  • 姿态估计:识别图像或视频中人体的关键点(如关节)并确定它们的位置。
  • 骨骼角度:通过连接关键点形成的线段之间的夹角来表示人体的姿态。

优势

  • 实时性:OpenPose 能够处理实时视频流。
  • 多人检测:同时识别多个目标。
  • 关键点精度:提供高精度的关键点定位。

类型

  • 2D姿态估计:在二维平面上估计人体姿态。
  • 3D姿态估计:在三维空间中估计人体姿态(OpenPose 主要用于2D)。

应用场景

  • 运动分析:体育训练中的动作分析。
  • 健康监测:老年人跌倒检测。
  • 虚拟现实:增强现实中的角色动画。

实现步骤

  1. 安装OpenPose:首先需要安装OpenPose库。
  2. 视频处理:读取视频文件或摄像头输入。
  3. 关键点检测:使用OpenPose提取每一帧中的人体关键点。
  4. 角度计算:根据关键点坐标计算骨骼角度。

示例代码(Python)

代码语言:txt
复制
import cv2
import numpy as np
from openpose import pyopenpose as op

# 配置OpenPose参数
params = dict()
params["model_folder"] = "path/to/openpose/models/"

# 启动OpenPose
opWrapper = op.WrapperPython()
opWrapper.configure(params)
opWrapper.start()

# 打开视频文件
cap = cv2.VideoCapture('input_video.mp4')

while cap.isOpened():
    ret, frame = cap.read()
    if not ret:
        break

    # 处理帧
    datum = op.Datum()
    datum.cvInputData = frame
    opWrapper.emplaceAndPop([datum])

    # 获取关键点
    keypoints = datum.poseKeypoints

    if keypoints is not None:
        for person in keypoints:
            for i in range(len(person)):
                if i+2 < len(person):
                    # 计算角度(例如,计算肘关节的角度)
                    x1, y1 = person[i]
                    x2, y2 = person[i+1]
                    x3, y3 = person[i+2]
                    angle = np.arctan2(y3-y2, x3-x2) - np.arctan2(y1-y2, x1-x2)
                    angle = np.degrees(angle)
                    print(f"Angle at keypoint {i}: {angle}")

    # 显示结果
    cv2.imshow('OpenPose Output', datum.cvOutputData)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

cap.release()
cv2.destroyAllWindows()

可能遇到的问题及解决方法

  • 性能问题:处理高分辨率视频时可能会遇到性能瓶颈。
    • 解决方法:降低视频分辨率或使用GPU加速。
  • 关键点检测不准确:在复杂背景或光照条件下,关键点检测可能不准确。
    • 解决方法:优化预处理步骤,如使用图像增强技术。
  • 安装问题:OpenPose的安装可能因依赖项问题而复杂。
    • 解决方法:仔细检查官方文档,确保所有依赖项都已正确安装。

通过以上步骤和方法,可以利用OpenPose有效地计算视频中的人体骨骼角度。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

基于 Openpose 实现人体动作识别

在行为监测方面,不仅仅有通过图形、温湿度、声音等信息进行蜂群行为的监测,同时更多的应用是集中在人类行为监测上。而人体姿态识别作为行为监测重要参考依据在视频捕捉、计算机图形学等领域得到了广泛应用。...在此次的模型中通过调用轻量级的openpose模型进行人体姿态识别,其主要的方法是通过openpose获取人体各个骨骼关键点位置,然后通过欧氏距离进行匹配两个骨骼来具体检测到每一个人,对于常见检测中骨骼关键点的缺失可以通过上一帧的骨骼信息进行填充...其最终实现效果如下图可见: 系统组成 系统运行的基本流程: 1、利用openpose遍历数据集下不同分类下的人物的姿态信息进行提取作为动作特征并保存为对应的TXT文档。...1.1 Openpose环境的构建 openpose是依赖于卷积神经网络和监督学习实现人体姿态评估算法,其主要的优点在于适用于多人二维且较为精准和迅速的识别开源模型。...本文共设定站立、行走、奔跑、跳动、坐下、下蹲、踢腿、出拳、挥手等行为标签,每类行为通过摄像头采集相关视频,并将视频分帧成多张图片,由不同的照片组合形成了不同动作,将其中的姿态特征利用openpose提取作为完整动作的基本识别特征

6.3K30

ST-GCN 实现人体姿态行为分类

它在对视频中的人类行为进行运动分析、行为识别乃至延伸至人机交互领域都有着非常广泛的应用。研究初期,人体行为识别主要是以基于静态图像为研究对象。通过提取静态图像中的人体动作特征并对动作进行分类。...在通常情况下,人体行为识别有着例如外观、光流、身体骨骼和深度等多种模态,人们可以通过这些模态建模并传达重要信息进而实现人体行为识别。...Ji等人利用深度图来将骨骼信息嵌入从而达到对人体进行分区的目的,以及Zhao等人提出了一种贝叶斯分层动态模型用于人类动作识别也取得了不错的效果。...1.1 模型通道 基于骨架的数据可以从动作捕捉设备中获得,也可以从视频中获得姿态估计算法。通常数据是一个坐标系序列,每个坐标系都有一组关节坐标。...然后它将被标准的SoftMax分类器分类到相应的动作类别。 1.2 骨骼图结构 骨骼序列通常由每一帧中每个人体关节的2D或3D坐标表示。

1K20
  • 更加精细的OpenPose DW Openpose

    更为精细的DW openpose 人体姿态识别是计算机视觉领域的重要研究课题之一,它对于人机交互、虚拟现实、体育分析等应用具有广泛的潜在价值。...OpenPose是一种广为人知的开源人体姿态估计系统,它能够从图像或视频中准确地检测并估计人体的关键点位置。...这使得OpenPose DW能够更好地捕捉人体姿态中的微妙细节,并对复杂动作进行更准确的分析。...其次,宽度优化增加了网络的感受野和容量,提高了关键点识别的鲁棒性。OpenPose DW可以更好地适应不同尺度的人体,同时对于姿态中的细节变化也更加敏感。...首先,对于复杂场景和动作,OpenPose DW仍然存在一定的识别误差。其次,OpenPose DW需要大量的计算资源和高效的算法实现,才能在实时性要求较高的应用中发挥其优势。

    1.9K20

    基于人体骨骼点的动作识别

    相较于 RGB 帧或光流,人体骨骼这一模态与人体动作天然更密切,且更加紧凑。 因此,人体骨骼模态在各类动作识别任务中有广泛的应用。...ST-GCN ST-GCN 是将 GCN 应用在基于骨骼点的动作识别的开山之作, 这里首先介绍一下 ST-GCN 整体的网络结构, 如下图所示, 首先对视频采用 OpenPose 等算法进行姿态估计,...数据预处理 OpenPose 是一个标注人体的关节(颈部,肩膀,肘部等),连接成骨骼,进而估计人体姿态的算法。...对于更短的视频,通常采用循环的方式补齐帧数; - V 代表骨骼点的数量,如果是 NTU-RGB+D 数据集,V 等于 25,如果是使用 OpenPose 进行姿态估计,V 等于 18; - M 代表一帧中的人数...跟基于 GCN 的方法不同的是, PoseC3D 基于提取好的 2D 姿态, 生成 K x H x W 的二维关键点热图 ( K 是骨骼点的数量), 再堆叠视频中T帧热图 构成 K x H x T x

    4.9K31

    使用关键点检测打造小工具Padoodle,让涂鸦小人跟随真人学跳舞

    我们需要对检测出的骨骼点K进行一定的扩充,本项目在每两个相邻骨骼点之间计算中点作为扩充的骨骼点,然后重复这个操作两次。...在后续的使用中,因为要大量的计算取样点和骨骼点的相对关系(通过评估,这部分的时间会远远大于模型的运算时间,成为了流畅运行的瓶颈),所以这里我们要对这些取样点B进行过滤,我这里使用最直观的过滤方法,即当连续的三个点在同一条直线上时...在我们做好前一步的初始化后,就可以在之后的每一帧中,计算皮肤点的新位置了。...在前一步绑定的时候,我们同时还记录了一些锚点的其他信息:该皮肤点与锚点的距离和角度信息。在得到四个锚点之后,我们还要计算一个初始权重α。...在每帧中根据新的骨骼计算新的皮肤点: def calculateSkin(skins, scale): for skin in skins: xw = 0 yw

    48220

    Openpose+Tensorflow 这样实现人体姿态估计 | 代码干货

    作者 | 李秋键 出品 | AI科技大本营(ID:rgznai100) 人体姿态估计指从单个 RGB 图像中精确地估计出人体的位置以及检测骨骼关键点的位置。...人体姿态估计是计算机视觉领域的研究热点,是诸多计算机视觉任务的基础,如动作分类、异常行为检测、自动驾驶等。...本项目通过使用 Tensorflow 搭建 Openpose 环境实现对人体18个骨骼点的实时监测。...智能监控与普通监控的区别主要在于其将人体姿态估计技术嵌入视频服务器中,运用算法估计、判断监控画面场景中的人体姿态,提取其中的关键信息,当出现异常行为时及时向用户发出警报。...算法测试 3.1 人体关键点: Openpose算法针对已有"bottom-up"方法缺点: (1)未利用全局上下文先验信息,也即图片中其他人的身体关键点信息;(2)将关键点对应到不同的人物个体,算法复杂度太高

    3.6K90

    用AI「驯服」人类幼崽:这个奶爸找到了硬核带娃的乐趣

    鉴于 Jetson AGX Xavier 配置还不错,Nalwan 决定用它来帮儿子做一个新玩具,实现他「展翅高飞」的梦想。 新玩具名叫 Griffin(神话中的狮鹫),最终实现效果是这样的: ?...我可以单独旋转每个翅膀,也可以移动 Griffin 的身体,间接移动两个翅膀。实现该目标的一种恰当方式是构建骨骼动画系统,将身体部位组织为树结构的形式。...我利用 libSFML 添加音效播放:当 Griffin 起飞时,会出现鹰的尖啸和风声。 构建人体姿态估计模块 该模块旨在检测来自摄像头输入的人体姿态。...OpenPose 是一个流行的开源库,并具备大量估计人体姿态、手部姿势和面部特征的 AI 模型。我使用的是人体姿态估计 COCO 模型,以 resnet18 作为骨干特征提取器。...这里存在一个大问题:OpenPose 基于 PyTorch 框架构建,在 NVIDIA AGX Xavier 中运行速度很慢(4FPS),因为它无法利用重度优化的 TensorRT 框架。

    88530

    博客 | Github开源人体姿态识别项目OpenPose中文文档

    logo OpenPose人体姿态识别项目是美国卡耐基梅隆大学(CMU)基于卷积神经网络和监督学习并以caffe为框架开发的开源库。可以实现人体动作、面部表情、手指运动等姿态估计。...一些人体姿态识别案例案例: 《芳华》文工团跳舞视频片段:人体姿态识别 ? 《芳华》文工团跳舞视频片段:人体姿态识别 《叶问》武打视频片段:人体姿态识别 ?...·通过多个单一角度的视频进行三角测量。 ·菲力尔品牌摄像机的视频同步处理。 ·与Flir摄像机和Point Grey摄像机兼容,提供了C++语言的代码样本,用户可以自定义输入。...快速启动 大部分用户不需要调用OpenPose的C++和Python的开发接口,这些用户只需要运行OpenPose Demo即可 OpenPose Demo: 为了便于处理图片、视频或者网络摄像头的视频流...你发现OpenPose处理图片或视频出错,请把识别失败的案例发到openposecmu@gmail.com邮箱中,我们会运用你提供的信息优化我们的算法。 你发现了软件功能或者运行速度上的bug。

    10.4K40

    程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

    然而,一个来自意大利拉不勒斯的小哥哥,决定利用“舞步”(身体姿势)来控制自己家的灯,整个过程利用一个神经网络实现,就像这样: ? 下面是小哥哥写的教程,文摘菌在不改变原意的基础上进行了编译。...我们今天即将采用的神经网络模型卡内基梅隆大学的团队也曾经使用过,他们用自己的全景数据集来训练该模型。该数据集包括五个半小时的视频,视频中包含了150万个手动添加的代表人体骨骼位置的标签。...整个全景工作室的圆屋顶上装有500个摄像头,所有摄像头都对准人,从不同角度记录他们的动作。 这个全景工作室用构造训练数据集几乎是完美的,很方便进行计算机视觉的实验。 ?...写一个程序并利用OpenCV来收集带标签的数据 使用OpenPose的成果,我们得到了25个代表人体骨骼架构的标签。...这里有个稍微需要注意的地方,输入层的大小为50,提醒大家一下,这个数字是OpenPose模型中位置点的X坐标和Y坐标数量之和。 最后我们用到了Softmax层,它是用来分类的。

    40920

    程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

    导读:对于上了床就再也不想下来的人来说,关灯成为睡觉前面临的最大挑战! 然而,一个来自意大利拉不勒斯的小哥哥,决定利用“舞步”(身体姿势)来控制自己家的灯,整个过程利用一个神经网络实现。...我们今天即将采用的神经网络模型卡内基梅隆大学的团队也曾经使用过,他们用自己的全景数据集来训练该模型。该数据集包括五个半小时的视频,视频中包含了150万个手动添加的代表人体骨骼位置的标签。...整个全景工作室的圆屋顶上装有500个摄像头,所有摄像头都对准人,从不同角度记录他们的动作。 这个全景工作室用构造训练数据集几乎是完美的,很方便进行计算机视觉的实验。 ?...02 写一个程序并利用OpenCV来收集带标签的数据 使用OpenPose的成果,我们得到了25个代表人体骨骼架构的标签。...这里有个稍微需要注意的地方,输入层的大小为50,提醒大家一下,这个数字是OpenPose模型中位置点的X坐标和Y坐标数量之和。 最后我们用到了Softmax层,它是用来分类的。

    34620

    神“乐”马良:AI直接将音频转换成动画

    一个有趣的问题是:身体的运动可以通过音乐信号进行计算预测吗?这是一个极具挑战性的计算问题。...受唇语预测和视频对象检测启发 人体动力学是很复杂的,尤其是考虑到学习音频相关性所需要的质量。传统上,通过视频序列(而不是音频)来预测人体自然运动的最优方法是采用实验室状态下拍摄的动作捕捉序列。...如果我们能够利用优秀钢琴家演奏的公开视频,我们就有可能在数据上实现更高程度的多样性。但直到最近,从视频中准确地估计身体姿势才成为可能。今年出现了几种方法,可以让我们从“自然状态下”的数据中学习。...我们获取相对精确的关键点的过程如下: 我们首先通过三个库来运行视频:提供脸部、身体和手的关键点的OpenPose,MaskRCNN,以及人脸识别算法DeepFace。...给定一系列2D预测点和身体的动画化身,动作便被应用到化身上。我们使用的化身是带有人体骨骼装置的3D人体模型。 实验 评估: 我们在网络中尝试了不同的参数选择,并在表1和表2中提供了比较。

    1.3K00

    用AI「驯服」人类幼崽,手头有娃的可以试试

    我可以单独旋转每个翅膀,也可以移动 Griffin 的身体,间接移动两个翅膀。实现该目标的一种恰当方式是构建骨骼动画系统,将身体部位组织为树结构的形式。...④ 我利用 libSFML 添加音效播放:当 Griffin 起飞时,会出现鹰的尖啸和风声。 2. 构建人体姿态估计模块 该模块旨在检测来自摄像头输入的人体姿态。...OpenPose 是一个流行的开源库,并具备大量估计人体姿态、手部姿势和面部特征的 AI 模型。我使用的是人体姿态估计 COCO 模型,以 resnet18 作为骨干特征提取器。...COCO 关节点图 这里存在一个大问题:OpenPose 基于 PyTorch 框架构建,在 NVIDIA AGX Xavier 中运行速度很慢(4FPS),因为它无法利用重度优化的 TensorRT...在下面的视频中,你可以看到校准和测试的过程。这个视频帧率较低,是因为我在 Ubuntu 桌面上以 15FPS 录屏,尽量减少对 Griffin 的影响。

    33820

    程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

    导读:对于上了床就再也不想下来的人来说,关灯成为睡觉前面临的最大挑战! 然而,一个来自意大利拉不勒斯的小哥哥,决定利用“舞步”(身体姿势)来控制自己家的灯,整个过程利用一个神经网络实现。...我们今天即将采用的神经网络模型卡内基梅隆大学的团队也曾经使用过,他们用自己的全景数据集来训练该模型。该数据集包括五个半小时的视频,视频中包含了150万个手动添加的代表人体骨骼位置的标签。...整个全景工作室的圆屋顶上装有500个摄像头,所有摄像头都对准人,从不同角度记录他们的动作。 这个全景工作室用构造训练数据集几乎是完美的,很方便进行计算机视觉的实验。 ?...02 写一个程序并利用OpenCV来收集带标签的数据 使用OpenPose的成果,我们得到了25个代表人体骨骼架构的标签。...这里有个稍微需要注意的地方,输入层的大小为50,提醒大家一下,这个数字是OpenPose模型中位置点的X坐标和Y坐标数量之和。 最后我们用到了Softmax层,它是用来分类的。

    1.3K85

    关键点定位︱四款人体姿势关键点估计论文笔记

    最后使用ILP优化模型进行姿态估计 DeepCut是利用自适应的Fast R-CNN来进行人体部分的检测 CMU OpenPose 两条线,经过卷积网络提取特征,得到一组特征图,然后分成两个岔路,分别使用...主要思想是利用贪心算法自下而上的解析步骤从而达到高准确率和实时性。身体部位定位和关联是在两个分支上同时进行的。该方法获得了COCO2016 keypoints challenge中夺得第一名。...Program (ILP),可以有效求解 不过同样地,因为使用了自适应的Fast R-CNN来进行人体部分的检测,又使用ILP来进行多人的人体姿态估计,导致DeepCut的计算复杂度比较高。...第三个组成部件为参数化的姿态非极大值抑制器(Parametric Pose NMS)。传统的两步法中,人体定位框会有较多的冗余检测。...这大兄弟在玩 AI challenger人体骨骼关节点赛题的时候,同样自己训练并开源出来。

    2.8K50

    行为识别——基于骨架提取人体关键点估计的行为识别

    在数据集足够的情况下就能够达到很好的效果。但是生活中动作往往是连续的,因此yolo就无法对多帧图片进行训练。...1. openpose openpose官方源码 openpose是自下而上的人体姿态估计算法,也就是先得到关键点位置,再获得骨架。...因此计算量不会因为图片上人物的增加而显著增加,能保证时间基本不变。 代码能够实现二维多人关键点检测:15或18或25个关键点的身体/脚关键点估计。运行时间不依赖于检测到的人数。...openpose是自下而上的人体姿态估计算法,因此就会出现当人群密集,或者两个人靠的太近,就容易检测错误。...原始的openpose需要很好的显卡参与计算,也就是说需要很好的硬件支持才能够跑起来,因此就有了个轻量级版本的openpose(基于mobileNetV2) 轻量级版本 lightweight openpose

    4.1K10

    姿态估计开源模型、数据集分享

    姿态估计是一种计算机视觉技术,旨在从图像或视频中识别和理解人体的姿势或动作。它涉及检测人体的关键点,如头部、肩膀、手臂、腿部等,并确定它们之间的关系,以推断出人体的姿势或动作。...姿态估计因其在各个领域的广泛应用而引起了研究人员的兴趣。 如: 体育训练分析:可以利用精确的人体姿态追踪,评估运动员的动作准确度,帮助教练进行个性化指导。...人机交互:姿态估计使计算机能够解读和响应人类手势,从而实现人与机器之间更直观、更自然的交互。 虚拟现实与游戏:利用姿势估计技术,实现更加真实的互动体验。...OpenPose OpenPose 是首个实时多人人体姿态估计系统,主要针对实时场景下多人的手部、面部、足部等人体关键点(总共135个关键点),进行检测。...无论是检测购物街中的多个人、快闪族还是街头表演者,都可以借助此模型实现。

    47610

    程序员深夜用Python跑神经网络,只为用中二动作关掉台灯!

    然而这一届网友永远不会让人失望,他们开发出了各种关灯大法: 当然少不了憨豆先生最简单粗暴的关灯方式: 然而,一个来自意大利拉不勒斯的小哥哥,决定利用“舞步”(身体姿势)来控制自己家的灯,整个过程利用一个神经网络实现...我们今天即将采用的神经网络模型卡内基梅隆大学的团队也曾经使用过,他们用自己的全景数据集来训练该模型。该数据集包括五个半小时的视频,视频中包含了150万个手动添加的代表人体骨骼位置的标签。...整个全景工作室的圆屋顶上装有500个摄像头,所有摄像头都对准人,从不同角度记录他们的动作。 这个全景工作室用构造训练数据集几乎是完美的,很方便进行计算机视觉的实验。...写一个程序并利用OpenCV来收集带标签的数据 使用OpenPose的成果,我们得到了25个代表人体骨骼架构的标签。...这里有个稍微需要注意的地方,输入层的大小为50,提醒大家一下,这个数字是OpenPose模型中位置点的X坐标和Y坐标数量之和。 最后我们用到了Softmax层,它是用来分类的。

    50720

    多模态数据的行为识别综述

    从视频中准确提取人体动作的特征并识别动作,能为医疗、安防等领域提供重要的信息,是一个十分具有前景的方向。...00 引言人体行为识别是计算机视觉、深度学习、视频处理和模式识别等学科交叉的研究课题,是当前计算机视觉的一个研究热点。...04 基于骨骼数据的行为识别方法该方法通过骨骼关节实时对3D人体关节位置进行编码,实现人体行为的动作识别。由于人体骨骼的运动可以区分许多动作,利用骨骼数据进行动作识别是一个有前景的方向。...另外,图卷积将每个关节点视为图中的一个点,其复杂性和人数成正比,而现实中的许多动作涉及多人以及相关物体。成倍增加的计算消耗量使得图卷积难以在多人动作的任务上实现较好的应用。...RGB模态是能够利用一般相机直接获得,深度模态需要深度传感器(如Kinect相机)获得,而骨骼模态是从前两者模态中抽象得到的一种描述人体行为的模态数据。

    2.5K21

    程序员深夜用Python跑神经网络,只为用中二动作关掉台灯

    然而,一个来自意大利拉不勒斯的小哥哥,决定利用“舞步”(身体姿势)来控制自己家的灯,整个过程利用一个神经网络实现,就像这样: ? 下面是小哥哥写的教程,文摘菌在不改变原意的基础上进行了编译。 ?...我们今天即将采用的神经网络模型卡内基梅隆大学的团队也曾经使用过,他们用自己的全景数据集来训练该模型。该数据集包括五个半小时的视频,视频中包含了150万个手动添加的代表人体骨骼位置的标签。...整个全景工作室的圆屋顶上装有500个摄像头,所有摄像头都对准人,从不同角度记录他们的动作。 这个全景工作室用构造训练数据集几乎是完美的,很方便进行计算机视觉的实验。 ?...写一个程序并利用OpenCV来收集带标签的数据 使用OpenPose的成果,我们得到了25个代表人体骨骼架构的标签。...这里有个稍微需要注意的地方,输入层的大小为50,提醒大家一下,这个数字是OpenPose模型中位置点的X坐标和Y坐标数量之和。 最后我们用到了Softmax层,它是用来分类的。

    61330

    基于 OpenCV 和 OpenPose 的棒球挥杆人体姿势估计

    有一些开源人体姿态估计,例如PoseNet和OpenPose,OpenPose 由 CMU 团队开发并得到广泛应用。...分析 然后我们可以修改上面提到的 OpenPose 过程,让它成为一个函数,并在按下 “分析” 按钮时调用该函数来分析上传的视频。...它生成姿势估计的结果和带有人体姿势的视频,然后我们就可以使用 Streamlit 的视频功能将其展示在页面上。...在 Streamlit share 上运行我们的应用程序的一个缺点是它不提供 GPU 计算。然而,姿势检测的计算量非常大,需要 GPU 来加速推理时间,因此仅使用 CPU 处理视频需要相当长的时间。...例如,可以计算手的速度,也可以计算摆动过程中关节之间的角度,还可以比较球员的挥杆。这些数据可能有助于高级训练和预防损伤。

    1.7K20
    领券