位置: 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制作动画代码)

  • 进项税额怎么抵税
  • 公司代扣个人所得税有完税凭证明
  • 应交税费和税金及附加的关系
  • 结转代扣社会保险费分录
  • 医疗费用收费票据
  • 利润表季报的本期金额是本年累计吗
  • 资产负债表应交税金负数是什么意思
  • 微型企业政府补贴政策
  • 租房专项扣除有上限吗
  • 发出商品和委托代销商品科目的区别
  • 51电子发票客户端后使用教程
  • 两处以上取得工资如何交社保
  • 自制原始凭证和原始凭证的区别
  • 年底预收货款如何入账
  • 一次性取得的租金收入
  • 递延收益在资产负债表哪里列示
  • 收到员工的罚款钱怎么写分录
  • 劳保费用可以开专票吗
  • 税务迁移会影响外经证核销吗
  • 酒店行业税负率怎么算
  • 汇算清缴是啥
  • 免税的和不免税的可以开在一张发票上吗
  • 发票金额看不清楚可以报销吗
  • 小规模开票是含税的吗
  • 出口一般纳税人的税率
  • 关税征收目的
  • 购入低值易耗品计入什么科目
  • 信用卡核销是什么意思
  • 金税盘全额抵扣分录怎么做
  • PRISMSTA.EXE - PRISMSTA是什么进程 有什么用
  • 销售商品发生的现金折扣
  • 如何安装u盘的系统
  • 股权划转是否涉及印花税
  • 租入经营用房屋的改良支出
  • PHP:imagegrabwindow()的用法_GD库图像处理函数
  • 张家界天门山介绍简介
  • 企业所得税计算器在线计算
  • php使用自定义函数编程求半径r的圆的周长和面积
  • 外出培训餐费要进差旅费吗
  • 微信小程序开发平台
  • 新版python
  • crontab命令用法
  • 微信支付php代码
  • 为什么会有不同的人种
  • python locator
  • 未缴增值税的贷方
  • 企业所得税申报错误怎么更改
  • 会议服务费免税吗
  • 京东开专用发票需要用公户付款吗?
  • 以前未入账固定资产补入账政府会计
  • 预算会计与企业会计的区别感悟
  • 出口货物没有进项发票用什么平台申报
  • 上年亏损次年赢亏怎么算
  • 寄售商店代销寄售物品的税率
  • 因员工过失造成的工伤用不用赔
  • 调整以前月份的管理费用怎么做
  • 递延收益影响当期所得税吗为什么
  • 旅游业营业税税率
  • 清空表内数据语句
  • 复制电脑系统
  • mac 硬盘数据恢复
  • win10系统无法运行exe文件
  • linux中tail命令详解
  • linux sed
  • linux计划任务如何设置
  • Metaio in Unity3d 教程--- 二. 创建自己的Application
  • 对用户输入的判断
  • 不得不佩服自己的搞笑说说
  • 巨幕prime
  • u3d脚本语言
  • 小米手机图库图标
  • centos7如何安装
  • 汽车车船税收费标准表山西
  • 12366纳税服务热线接收税收违法行政行为举报管理办法
  • 装卸搬运服务是什么服务
  • 南通税务网站
  • 船舶税由谁代征
  • 晋中税务局领导班子简历
  • 个体开专用票需要进项吗
  • 迈凯伦gt1
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设