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.hqwc.cn/news/540237.html

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

相关文章

github 中的java前后端项目整合到本地运行

前言: 本文章中所有内容仅供学习交流使用&#xff0c;不用于其他任何目的&#xff0c;不提供完整代码&#xff0c;抓包内容、敏感网址、数据接口等均已做脱敏处理&#xff0c;严禁用于商业用途和非法用途&#xff0c;否则由此产生的一切后果均与作者无关&#xff01; 本文章未…

K8S CNI

OCI基本概念 OCI&#xff0c;Open Container Initiative&#xff0c;开放容器标准&#xff0c;是一个轻量级&#xff0c;开放的治理结构&#xff08;项目&#xff09;&#xff0c;在 Linux 基金会的支持下成立&#xff0c;致力于围绕容器格式和运行时创建开放的行业标准。 OCI…

减资公告重磅上线:批量查询与实时监控,教你如何在公告期洞察企业风险!

官.网地址&#xff1a;合合TextIn - 合合信息旗下OCR云服务产品 新《公司法》将于2024年7月1日起施行。不少企业注意到其中的一大变化&#xff1a;新《公司法》对有限责任公司认缴登记制进行了完善&#xff0c;明确全体股东认缴的出资额由股东按照公司章程的规定自公司成立之日…

全栈的自我修养 ———— python使用绘制工具turtle

实现基础turtle入门 一、下载二、基础知识三、实现效果1、圆2、五3、蛇5、循环的正方形 一、下载 turtle是python中模块中自带的一般不需要下载如果报错如下&#xff0c;需要下载自己下载python-tk模块,详细请看python-tk下载 (mac的话可以直接用brew install python-tk) (my…

工具篇--分布式定时任务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…

JavaWeb(二)

目录 二、JavaScript 1.定义 2.js引入方式 1.内部脚本 2.外部脚本 3.js基本语法 1.书写语法 2.变量 3.数据类型、运算符、流程控制语句 1.原始类型 2.引用类型 3.运算符 4.类型转换 1.字符串类型转为数字&#xff1a; 2.其他类型转为boolean&#xff1a; 5.流程…

Git概述及安装步骤

一、Git简介 Git是一个免费的、开源的分布式版本控制系统&#xff0c;可以快速高效地处理从小型到大型的各种项目。Git 易于学习&#xff0c;占地面积小&#xff0c;性能极快。它具有廉价的本地库&#xff0c;方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CV…

Elasticsearch:使用标记修剪提高文本扩展性能

作者&#xff1a;来自 Elastic Kathleen DeRusso 本博客讨论了 ELSER 性能的令人兴奋的新增强功能&#xff0c;该增强功能即将在 Elasticsearch 的下一版本中推出&#xff01; 标记&#xff08;token&#xff09;修剪背后的策略 我们已经详细讨论了 Elasticsearch 中的词汇和…

Windows客户端漏洞挖掘(红队角度)

0x01 前言 周五的时候看了key佬的演讲受益良多呀&#xff0c;来水水&#xff0c;写下目前针对Windows客户端类程序的部分挖掘入口吧&#xff0c;然后分享一下随手挖的很简单很简单的案例。 传统客户端 监听类的: 这里说的监听类的&#xff0c;指的就是安装客户端后启动的端口…

vue 引用百度地图

address.vue <template><div><!-- 地图 --><el-drawer:visible.sync"type1"direction"rtl"size"50%"append-to-bodyclass"map-drawer":before-close"beforeClose"><div style"width: 100%…

软件杯 深度学习 opencv python 实现中国交通标志识别_1

文章目录 0 前言1 yolov5实现中国交通标志检测2.算法原理2.1 算法简介2.2网络架构2.3 关键代码 3 数据集处理3.1 VOC格式介绍3.2 将中国交通标志检测数据集CCTSDB数据转换成VOC数据格式3.3 手动标注数据集 4 模型训练5 实现效果5.1 视频效果 6 最后 0 前言 &#x1f525; 优质…

[iOS]高版本MacOS运行低版本Xcode

Xcode 版本支持文档 目的&#xff1a; 在MacOS Sonoma 系统上安装 Xcode14.3.1 第一步 先在Xcode下载一个Xcode14.3.1的压缩包 第二步 本地解压Xcode&#xff0c;将外层目录名变更为Xcode_14.3.1&#xff0c;将文件拷贝到 /Applications目录下。 第三步 变更xcode-sel…