Python实时追踪关键点组成人体模型

项目背景

最近遇到这样一个需求:

1:实时追踪关键点组成人体模型(手臂包括三个点:手腕,肘关节,双肩;腿部包括胯骨,膝盖,脚踝)
2:运用追踪到的关键点分析计算出的关键数据包括手臂弯曲角度,双脚间距离与肩宽的比例,重心相对高度,步频,弹跳相对高度
3:界面
3.1:带追踪到的关键点的实时追踪画面
3.1:计算出的实时相关数据(2中列出的)
3.2:各个数据的合格标识符(在范围内为绿色,在范围外为红色)(每个数据范围随便设置,能体现三个状态就行,及小于范围,范围内,大于范围)
3.3:针对每个数据提出一条建议,判断数据在3.2括号内的哪种范围,以步频为例,小于范围就建议加快步频,在范围内就建议保持状态,大于范围就建议请降低步频
4:提供方式:网页
5:主要编程语言:Python

基本原理及概念

  1. 使用深度学习算法,如OpenPose或PoseNet,实时检测视频帧中的人体姿态。
  2. 从检测到的姿态中提取关键点,包括手腕、肘关节、双肩、胯骨、膝盖和脚踝。
  3. 计算关键数据,如手臂弯曲角度、双脚间距离与肩宽的比例、重心相对高度、步频和弹跳相对高度。
  4. 使用Python的Flask或Django框架创建网页,展示实时追踪画面、计算出的实时相关数据以及各个数据的合格标识符和建议。

示例代码

以下是个简单的Flask应用示例,用于展示实时追踪画面和计算出的实时相关数据:

from flask import Flask, render_template
import cv2app = Flask(__name__)@app.route('/')
def index():return render_template('index.html')def gen():cap = cv2.VideoCapture(0)while True:ret, frame = cap.read()if ret:# 在此处添加关键点检测和数据计算的代码# ...# 将处理后的帧转换为JPEG格式并返回ret, jpeg = cv2.imencode('.jpg', frame)yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + jpeg.tobytes() + b'\r\n')@app.route('/video_feed')
def video_feed():return Response(gen(),mimetype='multipart/x-mixed-replace; boundary=frame')if __name__ == '__main__':app.run(debug=True)

index.html文件中,可以使用以下代码展示实时追踪画面和计算出的实时相关数据:

<!DOCTYPE html>
<html>
<head><title>实时追踪关键点组成人体模型</title>
</head>
<body><h1>实时追踪画面</h1><img src="{{ url_for('video_feed') }}" alt="Video" width="640" height="480"><h1>实时相关数据</h1><ul><li>手臂弯曲角度: {{ elbow_angle }}°</li><li>双脚间距离与肩宽的比例: {{ leg_width_ratio }}</li><li>重心相对高度: {{ center_of_mass_height }}</li><li>步频: {{ step_frequency }}</li><li>弹跳相对高度: {{ bounce_height_ratio }}</li></ul>
</body>
</html>

核心代码:

# 以 OpenPose 为例,使用 OpenPose 进行人体姿势估计并获取关键点信息import cv2
import numpy as np
import openpose# 初始化 OpenPose 模型
params = {"model_folder": "openpose/models/"}
opWrapper = openpose.WrapperPython()
opWrapper.configure(params)
opWrapper.start()# 读取视频流
cap = cv2.VideoCapture('input_video.mp4')while True:# 读取视频帧ret, frame = cap.read()# 将帧传递给 OpenPose 模型进行处理datum = openpose.Datum()datum.cvInputData = frameopWrapper.emplaceAndPop([datum])# 获取关键点信息keypoints = datum.poseKeypoints# 在画面上绘制关键点if keypoints is not None:for person in keypoints:for point in person:cv2.circle(frame, (int(point[0]), int(point[1])), 3, (0, 255, 0), -1)# 显示结果cv2.imshow("OpenPose Output", frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()

注意事项

  1. 在示例代码中,我们使用了Flask框架创建网页,你可以根据需要选择其他框架。
  2. 在示例代码中,我们使用了OpenCV库读取摄像头视频流,你可以根据需要选择其他库或方法。
  3. 在示例代码中,我们没有实现关键点检测和数据计算的部分,你需要根据需要选择合适的算法和库来实现这部分功能。
  4. 在示例代码中,我们没有实现各个数据的合格标识符和建议的部分,你需要根据需要设计合适的逻辑来实现这部分功能。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/746133.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

数据仓库的设计开发应用(一)

目录 一、数据仓库设计的特点二、数据仓库系统开发过程三、数据仓库系统的规划 一、数据仓库设计的特点 1、“数据驱动” 的设计 数据仓库是从已有数据出发的设计方法&#xff0c;即从数据源抽取数据&#xff0c;经转换形成面向主题&#xff0c;支持决策的数据集合。 以全面了…

Talk|加州大学洛杉矶分校鲁盼:基于大型语言模型的多模态数学推理

本期为TechBeat人工智能社区第579期线上Talk。 北京时间3月14日(周四)20:00&#xff0c;加州大学洛杉矶分校博士生—鲁盼的Talk已准时在TechBeat人工智能社区开播&#xff01; 他与大家分享的主题是: “基于大型语言模型的多模态数学推理”&#xff0c;向大家系统地介绍了多模态…

大语言模型智能体简介

大语言模型&#xff08;LLM&#xff09;智能体&#xff0c;是一种利用大语言模型进行复杂任务执行的应用。这种智能体通过结合大语言模型与关键模块&#xff0c;如规划和记忆&#xff0c;来执行任务。构建这类智能体时&#xff0c;LLM充当着控制中心或“大脑”的角色&#xff0…

【数据结构】模拟实现二叉搜索树

文章目录 1. 二叉搜索树的实现2. 二叉搜索树的应用3. 改造二叉搜索树为 KV 结构4. 二叉搜索树的性能分析 1. 二叉搜索树的实现 namespace key {template<class K>struct BSTreeNode{typedef BSTreeNode<K> Node;Node* _left;Node* _right;K _key;BSTreeNode(const…

YOLOv8独家改进:backbone改进 | 最新大卷积核CNN架构UniRepLKNet,ImageNet 88% | CVPR2024

💡💡💡本文独家改进:大核卷积一统多种模态!RepLK正统续作UniRepLKNet,代替YOLOv8 Backbone 改进结构图如下: 收录 YOLOv8原创自研 https://blog.csdn.net/m0_63774211/category_12511737.html?spm=1001.2014.3001.5482 💡💡💡全网独家首发创新(原创),适…

Windows系统搭建Cloudreve结合内网穿透打造可公网访问的私有云盘

目录 ⛳️推荐 1、前言 2、本地网站搭建 2.1 环境使用 2.2 支持组件选择 2.3 网页安装 2.4 测试和使用 2.5 问题解决 3、本地网页发布 3.1 cpolar云端设置 3.2 cpolar本地设置 4、公网访问测试 5、结语 ⛳️推荐 前些天发现了一个巨牛的人工智能学习网站&#xff…

通讯芯片D3232简介——主要用于工控主板、工业控制器、新能源充电桩等众多涉及RS232通讯的产品。

一、应用领域 D3232芯片主要用于工控主板、工业控制器、程序烧录下载器、仿真器、新能源充电桩等众多涉及RS232通讯的产品。 二、基本特性 D3232芯片由两个线路驱动器、两个线路接收器和双电荷泵电路组成&#xff0c;具有HBM>15kV、CDM>2kV的ESD保护能力&#xff0c;并且…

Seata 2.x 系列【10】回滚日志表 undo_log

有道无术&#xff0c;术尚可求&#xff0c;有术无道&#xff0c;止于术。 本系列Seata 版本 2.0.0 本系列Spring Boot 版本 3.2.0 本系列Spring Cloud 版本 2023.0.0 源码地址&#xff1a;https://gitee.com/pearl-organization/study-seata-demo 文章目录 1. 概述2. 表语句…

【Java 并发】AbstractQueuedSynchronizer 中的 Condition

1 简介 任何一个 Java 对象都天然继承于 Object 类, 在线程间实现通信的往往会应用到 Object 的几个方法, 比如 wait(), wait(long timeout), wait(long timeout, int nanos) 与 notify(), notifyAll() 几个方法实现等待 / 通知机制。同样的, 在 Java Lock 体系下也有同样的方…

工具篇--分布式定时任务springBoot--elasticjob简单使用(1)

文章目录 前言一、elasticjob 介绍&#xff1a;二、elasticjob 使用&#xff1a;2.1 部署zookeeper&#xff1a;2.2 引入库2.2 定义任务&#xff1a;2.3 任务执行&#xff1a;2.4 任务执行控制台输出&#xff1a; 三、elasticjob 启动错误&#xff1a;3.1 KeeperErrorCode Ope…

【Node.js从基础到高级运用】十二、身份验证与授权:JWT

身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制&#xff0c;将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWT&#xff08;Json Web Token&#xff09; JWT是一种用于双方之间…

蓝桥杯深度优先搜索|剪枝|N皇后问题|路径之谜(C++)

搜索&#xff1a;暴力法算法思想的具体实现 搜索&#xff1a;通用的方法&#xff0c;一个问题如果比较难&#xff0c;那么先尝试一下搜索&#xff0c;或许能启发出更好的算法 技巧&#xff1a;竞赛时遇到不会的难题&#xff0c;用搜索提交一下&#xff0c;说不定部分判题数据很…

R语言tidycmprsk包分析竞争风险模型

竞争风险模型就是指在临床事件中出现和它竞争的结局事件&#xff0c;这是事件会导致原有结局的改变&#xff0c;因此叫做竞争风险模型。比如我们想观察患者肿瘤的复发情况&#xff0c;但是患者在观察期突然车祸死亡&#xff0c;或者因其他疾病死亡&#xff0c;这样我们就观察不…

基于单片机的太阳能热水器控制系统设计与仿真

目录 摘要 3 Controling system design and simulation of the solar water heater based on single chip microcomputer 4 第一章 前言 5 1.1设计背景和意义 5 1.2国内外的发展趋势 5 第二章 系统设计总览 7 2.1控制中心 7 2.2外围设备 7 第三章 系统硬件设计 8 3.1 总硬件的…

小程序路由跳转---事件通信通道EventChannel(二)

事件通信通道EventChannel实现两个页面之间的数据传输已在上篇小程序路由跳转—事件通信通道EventChannel&#xff08;一&#xff09;展开叙述&#xff0c;接下来讨论下多个页面&#xff08;三个及以上&#xff09;数据的通道如何构建。 本文重点&#xff1a;三个以上页面需将…

jenkin部署spring boot项目【从0到1】

写在前面&#xff0c;遇到的很多错误 本来想用docker启动Jenkins的&#xff0c;也这样做了&#xff0c;但是遇到了一个非常严重的问题&#xff0c;就是mvn命令在docker里面不生效&#xff0c;然后就修改文件&#xff0c;但是发现vi不存在&#xff0c;好的。接着用yum安装vi工具…

Vue2 引入自己下载的SVG图像的方式

Vue2 引入下载的SVG图像的方式 Step 1&#xff1a;安装依赖 npm i svg-sprite-loader --saveStep 2&#xff1a;创建文件路径 // index.js import Vue from vue import SvgIcon from /components/SvgIcon// svg component// register globally Vue.component(svg-icon, Svg…

《JAVA与模式》之抽象工厂模式

系列文章目录 文章目录 系列文章目录前言一、使用简单工厂模式的解决方案二、引进抽象工厂模式三、抽象工厂模式结构四、抽象工厂模式的优缺点前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看…

Hubspot 2023年推荐使用的11个AI视频生成器

视频是任何营销活动不可或缺的一部分&#xff1b;然而&#xff0c;如果你不懂编辑或时间紧迫&#xff0c;它们可能会很乏味&#xff0c;很难创建。一只手从电脑里伸出来&#xff0c;拳头碰到另一只手&#xff1b;代表AI视频生成器。 幸运的是&#xff0c;你可以利用许多人工智能…

【数据分析】数据分析介绍

专栏文章索引&#xff1a;【数据分析】专栏文章索引 目录 一、介绍 二、生活中的数据分析 1.无处不在的数据 2.为什么要进行数据分析&#xff1f; 三、数据挖掘案例 1.案例分析 一、介绍 数据采集&#xff1a;数据采集是指从不同来源收集原始数据的过程&#xff0c;包括…