开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (1)
master
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
项目仓库所选许可证以仓库主分支所使用许可证为准
master
分支 (1)
master
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (1)
master
python-learn
/
image
/
poseModule.py
python-learn
/
image
/
poseModule.py
poseModule.py 3.90 KB
一键复制 编辑 原始数据 按行查看 历史
菜瓜布 提交于 2024年05月08日 07:51 +08:00 . 图像识别demo
import cv2 as cv
# MediaPipe是一个用于构建机器学习管道的框架,用于处理视频、音频等时间序列数据。这个跨平台框架适用于桌面/服务器、Android、iOS和嵌入式设备,如Raspberry Pi和Jetson Nano。
import mediapipe as mp
import time
import math
class poseDetector():
def __init__(self,static_image_mode=False, # 静态图模式,False代表置信度高时继续跟踪,True代表实时跟踪检测新的结果
upper_body_only=False, # 是否只检测上半身
model_complexity=1,
smooth_landmarks=True, # 平滑,一般为True
min_detection_confidence=0.5, # 检测置信度# 检测置信度大于0.5代表检测到了,若此时跟踪置信度大于0.5就继续跟踪,小于就沿用上一次,避免一次又一次重复使用模型
min_tracking_confidence=0.5): # 跟踪置信度
self.static_image_mode = static_image_mode
self.upper_body_only = upper_body_only
self.model_complexity=model_complexity
self.smooth_landmarks = smooth_landmarks
self.min_detection_confidence = min_detection_confidence
self.min_tracking_confidence = min_tracking_confidence
# mediapipe.solutions.drawing_utils.draw_landmarks()绘制关键点的连线
self.mpDraw = mp.solutions.drawing_utils
# mediapipe.solutions.pose.Pose()姿态关键点检测函数
self.mpPose = mp.solutions.pose
self.pose = self.mpPose.Pose(self.static_image_mode,self.upper_body_only,self.model_complexity,self.smooth_landmarks,self.min_detection_confidence,self.min_tracking_confidence)
# 检测关键点方法
def findPose(self, frame, draw=True):
self.frame_RGB = cv.cvtColor(frame, cv.COLOR_BGR2RGB)
# 3.将图像传给姿态识别模型
self.res = self.pose.process(self.frame_RGB)
if self.res.pose_landmarks:
if draw:
# 绘制姿态坐标点,img为画板,传入姿态点坐标,坐标连线
# mediapipe.solutions.drawing_utils.draw_landmarks()绘制手部关键点的连线
# mpDraw.draw_landmarks(frame,res.pose_landmarks)
self.mpDraw.draw_landmarks(frame, self.res.pose_landmarks, self.mpPose.POSE_CONNECTIONS)
return frame
#关键点信息,是否绘制关键点连线
def findPosition(self, frame, draw=True):
self.lmList = []
if self.res.pose_landmarks:
for id,lm in enumerate(self.res.pose_landmarks.landmark):
h, w, c = frame.shape
cx, cy = int(lm.x * w), int(lm.y * h)
self.lmList.append([id,cx,cy])
if draw:
cv.circle(frame, (cx, cy), 10, (255, 0, 0), cv.FILLED)
return self.lmList
#计算运动时关键点角度
def findAngle(self,frame,p1,p2,p3,draw=True):
# 关键点坐标
x1,y1 = self.lmList[p1][1:]
x2,y2 = self.lmList[p2][1:]
x3,y3 = self.lmList[p3][1:]
# 关键点角度 atan2 方法返回一个 -pi 到 pi 之间的数值,表示点 (x, y) 对应的偏移角度。这是一个逆时针角度,以弧度为单位,正X轴和点 (x, y) 与原点连线 之间
angle = math.degrees(math.atan2(y3-y2,x3-x2)-math.atan2(y1-y2,x1-x2))
# 绘制关键点
if draw:
cv.line(frame,(x1,y1),(x2,y2),(255,0,255),3)
cv.line(frame,(x3,y3),(x2,y2),(255,0,255),3)
cv.circle(frame,(x1,y1),10,(0,0,255),cv.FILLED)
cv.circle(frame,(x1,y1),15,(0,0,255),2)
cv.circle(frame,(x2,y2),10,(0,0,255),cv.FILLED)
cv.circle(frame,(x2,y2),15,(0,0,255),2)
cv.circle(frame,(x3,y3),10,(0,0,255),cv.FILLED)
cv.circle(frame,(x3,y3),15,(0,0,255),2)
return angle
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

发行版

暂无发行版

贡献者

全部

语言

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/serpmelon/python-learn.git
git@gitee.com:serpmelon/python-learn.git
serpmelon
python-learn
python-learn
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /