位置: IT常识 - 正文

Opencv项目实战:18 人体姿态检测(opencv开发项目)

编辑:rootadmin
Opencv项目实战:18 人体姿态检测

目录

0、项目介绍

1、效果展示

2、项目搭建

3、项目代码讲解与介绍

 Basics.py

  PoseModule.py

Example.py

 人体姿态图​编辑

4、项目资源

5、项目总结


0、项目介绍

推荐整理分享Opencv项目实战:18 人体姿态检测(opencv开发项目),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:opencv项目实战教程,opencv项目实战,opencv c++项目,opencv三大经典项目实战,opencv的项目,opencv的项目,opencv的项目,opencv项目实战,内容如对您有帮助,希望把文章链接给更多的朋友!

mediapipe中有人体姿态检测的功能,今天我们就将实现最最基础的人体姿态估计项目,它的应用还是有很多的,比如:AI锻炼检测标准、老人跌倒检测等,这些方面其实已经有了很多的参考资料了,当然在我知道的当中用yolo的倒是挺多的。那么今天我们将会通过人物跳舞的视频进行一个姿态的检测。

 

1、效果展示

可以看见GIF图片中人物跳舞视频检测到的人体姿态骨架。(窗口大小的问题,膝盖下的点没有检测到) 

2、项目搭建Opencv项目实战:18 人体姿态检测(opencv开发项目)

如上图,你完全按这个模式照搬过去,完整的视频已经被我拆分好了,大家有兴趣的可以从我的GitHub中获得完整视频与拆分好的视频。

3、项目代码讲解与介绍 Basics.pyimport cv2import mediapipe as mpimport timempDraw = mp.solutions.drawing_utilsmpPose = mp.solutions.posepose = mpPose.Pose()cap = cv2.VideoCapture('Pose_videos/02.mp4')pTime = 0while True: success, img = cap.read() imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) results = pose.process(imgRGB) # print(results.pose_landmarks) if results.pose_landmarks: mpDraw.draw_landmarks(img, results.pose_landmarks, mpPose.POSE_CONNECTIONS) for id, lm in enumerate(results.pose_landmarks.landmark): h, w, c = img.shape print(id, lm) cx, cy = int(lm.x * w), int(lm.y * h) cv2.circle(img, (cx, cy), 5, (255, 0, 0), cv2.FILLED)####################################################################################### cTime = time.time() fps = 1 / (cTime - pTime) pTime = cTime cv2.putText(img, str(int(fps)), (70, 50), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 0), 3) cv2.imshow("Image", img) k=cv2.waitKey(1) if k==27: break  PoseModule.pyimport cv2import mediapipe as mpimport timeclass poseDetector(): def __init__(self, mode=False, upBody=False, smooth=True, detectionCon=0.5, trackCon=0.5): self.mode = mode self.upBody = upBody self.smooth = smooth self.detectionCon = detectionCon self.trackCon=trackCon self.mpDraw = mp.solutions.drawing_utils self.mpPose = mp.solutions.pose self.pose = self.mpPose.Pose(self.mode, self.upBody, self.smooth) def findPose(self, img, draw=True): imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) self.results = self.pose.process(imgRGB) if self.results.pose_landmarks: if draw: self.mpDraw.draw_landmarks(img, self.results.pose_landmarks, self.mpPose.POSE_CONNECTIONS) return img def findPosition(self, img, draw=True): self.lmList = [] if self.results.pose_landmarks: for id, lm in enumerate(self.results.pose_landmarks.landmark): h, w, c = img.shape # print(id, lm) cx, cy = int(lm.x * w), int(lm.y * h) self.lmList.append([id, cx, cy]) if draw: cv2.circle(img, (cx, cy), 5, (255, 0, 0), cv2.FILLED) return self.lmListdef main(): cap = cv2.VideoCapture('Pose_videos/02.mp4') pTime = 0 detector = poseDetector() while True: success, img = cap.read() img = detector.findPose(img) lmList = detector.findPosition(img, draw=False) if len(lmList) != 0: print(lmList[14]) cv2.circle(img, (lmList[14][1], lmList[14][2]), 15, (0, 0, 255), cv2.FILLED) cTime = time.time() fps = 1 / (cTime - pTime) pTime = cTime cv2.putText(img, str(int(fps)), (70, 50), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 0), 3) cv2.imshow("Image", img) k=cv2.waitKey(1) if k==27: breakif __name__ == "__main__": main()

此模块参照与cvzone中的cvzone.PoseModule模块,大家以后也要学习一下这种制作模块的思想,对大家做项目时是很有帮助的。

Example.pyimport cv2import timeimport PoseModule as pmcap = cv2.VideoCapture('Pose_videos/02.mp4')pTime = 0detector = pm.poseDetector()while True: success, img = cap.read() img = detector.findPose(img) lmList = detector.findPosition(img, draw=False) if len(lmList) !=0: print(lmList[14]) cv2.circle(img, (lmList[14][1], lmList[14][2]), 15, (0, 0, 255), cv2.FILLED) cTime = time.time() fps = 1 / (cTime - pTime) pTime = cTime cv2.putText(img, str(int(fps)), (70, 50), cv2.FONT_HERSHEY_PLAIN, 3, (255, 0, 0), 3) cv2.imshow("Image", img) k = cv2.waitKey(1) if k == 27: break

 可以看到,在以后做项目时就可以从模块当中copy代码,实现会变得更加的方便。

 人体姿态图

此为人体姿态各点的对应图,如果你想要检测某一点的信息,则需要查看此图。

(此图来源于Pose | mediapipe)

4、项目资源

GitHub:18 Human Posture Recognition

5、项目总结

本次项目是按照mediapipe提供的人体姿态估计的功能实现的项目,非常的基础和简单,后面如果我有更好的点子会继续更新这部分内容。

本文链接地址:https://www.jiuchutong.com/zhishi/295916.html 转载请保留说明!

上一篇:【bug】Failed at the node-sass@4.14.1 postinstall script(终于圆满解决)(but all failed)

下一篇:HTML创意动画代码(html制作动画代码)

  • 房地产开发企业预缴增值税
  • 没有达到30万销量怎么办
  • 个体户交税和个人所得税
  • 企业所得税的起征点
  • 缴纳工会经费会计处理
  • 金蝶迷你版年结怎么操作
  • 海关入库成功下一步干嘛
  • 银行收单业务员做什么的
  • 固定资产公允价值减去处置费用后的净额
  • 接受投资款尚未工商变工账务怎么做处理?
  • 免税货物开成含税率的怎么报税?
  • 个人转到公司账上的钱能开发票吗
  • 企业年金的税收政策
  • 土地资产类型
  • 个人取得的稿酬收入应该如何计算
  • 营改增后企业所得税
  • 一般纳税人可以开1%的发票吗
  • 关于330技术维护费
  • 什么是简易征收办法征收增值税
  • 企业盈利所得税交多少
  • 接受政府无偿划拨固定资产税务处理
  • 会员卡系统多少钱一套
  • 代销返点如何进行会计处理?
  • 管理费用进项税额转出会计分录
  • 印花税的征税范围及税率
  • 发生额对照表
  • 工商年报中生育保险本期实际缴费金额
  • 魁北克位置地图
  • bios怎么关
  • 企业注销时实收资本需要交税吗
  • php提示框
  • php定时执行代码
  • 最小的手机有多大
  • php获取上个月第一天
  • ubuntu npm安装
  • 低值易耗品摊销方法名称怎么选
  • 资产负债表中的货币资金怎么算
  • php的二维数组
  • 扩散分类
  • 数据分析课
  • 大前端技术架构
  • 增值税发票复印件可以入账吗与原件一致
  • ip6tables-restore命令 还原ip6tables表
  • discuz怎么添加diy模块
  • 社保可以不计提直接缴纳吗
  • 代开专票时缴纳的增值税账务处理如何做?
  • mongodb从入门到商业实战
  • sqlite3 top的查询及limit语法介绍
  • 银行开户有几种账户
  • 生育津贴现在可以打个人账户么
  • 从物资公司购入原木的进项税额
  • 应付账款的主要舞弊形式
  • 企业期末预收账款怎么算
  • 工会经费怎么计提及使用
  • 企业管理费用科目有哪些
  • 工资扣员工的罚款入什么科目
  • 劳务支出如何做账
  • 工厂的委托加工怎么写
  • 社保费跟工资有关系吗
  • 空调的折旧年限是多少年的
  • 公司买车贷款要看法人征信吗
  • 房地产企业以土地入股如何交纳企业所得税
  • 什么是建账?建账的基本程序是什么?
  • sql server数据库恢复
  • Linux Kernel 4.2下载 更新内容一览
  • win8.1配置要求
  • windows 10预览版
  • windowsxp教程
  • winxp怎么做系统
  • centos配置httpd
  • win8怎么找开始程序
  • linux userdel
  • 安卓沉浸式状态栏框架
  • ajax读取json
  • 拥有一个属于自己的空间高中作文
  • 浅谈会计诚信与职业道德论文
  • java的file类的常用操作
  • 如何开具红字发票明细
  • 怎么查国税
  • 河北电子税务局社保缴费流程
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设