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

  • 怎么添加其他翻译功能到火狐浏览器中(怎么添加翻译插件)

    怎么添加其他翻译功能到火狐浏览器中(怎么添加翻译插件)

  • 微信被对方拉黑是什么显示(微信被对方拉黑删除教你一招挽回)

    微信被对方拉黑是什么显示(微信被对方拉黑删除教你一招挽回)

  • ipx4级防水是指什么(ip4x防水等级是什么)

    ipx4级防水是指什么(ip4x防水等级是什么)

  • 华为电量旁边有个双N显示是啥(华为电量旁边有个图标)

    华为电量旁边有个双N显示是啥(华为电量旁边有个图标)

  • 手机号注册的微信号怎么解除绑定(手机号注册的微信手机号不用了怎么办)

    手机号注册的微信号怎么解除绑定(手机号注册的微信手机号不用了怎么办)

  • 雄迈摄像头恢复出厂设置(雄迈摄像头恢复出厂设置后还是原来)

    雄迈摄像头恢复出厂设置(雄迈摄像头恢复出厂设置后还是原来)

  • 微信聊天记录多久以前的不能恢复(微信聊天记录多个人一起删)

    微信聊天记录多久以前的不能恢复(微信聊天记录多个人一起删)

  • 腾讯会议可以多少人同时视频(腾讯会议可以多长时间)

    腾讯会议可以多少人同时视频(腾讯会议可以多长时间)

  • 如何关闭手机通话功能又有数据网络(如何关闭手机通讯助理)

    如何关闭手机通话功能又有数据网络(如何关闭手机通讯助理)

  • 苹果7p怎么降低系统版本(苹果7p手机怎么降低系统版本)

    苹果7p怎么降低系统版本(苹果7p手机怎么降低系统版本)

  • 为什么抖音一直频繁更新(为什么抖音一直发验证码过来)

    为什么抖音一直频繁更新(为什么抖音一直发验证码过来)

  • 佳能lbp2900硒鼓型号(佳能lbp2900硒鼓清零)

    佳能lbp2900硒鼓型号(佳能lbp2900硒鼓清零)

  • 三星s20韩版和国行的区别(三星s20韩版和国行哪个好)

    三星s20韩版和国行的区别(三星s20韩版和国行哪个好)

  • 天猫保价15天规则(天猫保价15天是从哪天算起)

    天猫保价15天规则(天猫保价15天是从哪天算起)

  • 网桥的作用是连接(网桥的作用有哪些)

    网桥的作用是连接(网桥的作用有哪些)

  • 抖音被判定搬运如何处理(抖音被判定搬运怎么申诉解封)

    抖音被判定搬运如何处理(抖音被判定搬运怎么申诉解封)

  • 苹果11能下载两个微信吗(苹果11能下载两个支付宝吗)

    苹果11能下载两个微信吗(苹果11能下载两个支付宝吗)

  • ipad和ipad mini区别(ipad与ipad mini区别)

    ipad和ipad mini区别(ipad与ipad mini区别)

  • 华为备忘录怎么定时间(华为备忘录怎么导入小米手机)

    华为备忘录怎么定时间(华为备忘录怎么导入小米手机)

  • 群聊如何屏蔽个人相册(群聊如何屏蔽个人消息)

    群聊如何屏蔽个人相册(群聊如何屏蔽个人消息)

  • 小米手机里的照片怎么转移到U盘(小米手机里的照片怎么导入新手机)

    小米手机里的照片怎么转移到U盘(小米手机里的照片怎么导入新手机)

  • 摄像头3mp什么意思(摄像头3m5m什么意思)

    摄像头3mp什么意思(摄像头3m5m什么意思)

  • qq启动出现问题怎么办(qq启动出现问题是怎么回事)

    qq启动出现问题怎么办(qq启动出现问题是怎么回事)

  • QQ电脑版如何艾特别人(电脑版qq怎么操作)

    QQ电脑版如何艾特别人(电脑版qq怎么操作)

  • 苹果xrid密码忘了怎么办(苹果xrid密码忘了怎么办视频)

    苹果xrid密码忘了怎么办(苹果xrid密码忘了怎么办视频)

  • 20分钟学会flex布局,熊二都表示学会了,你呢?(flexbuffers)

    20分钟学会flex布局,熊二都表示学会了,你呢?(flexbuffers)

  • 免税进账转出怎么填表
  • 老板的报销分录怎么写
  • 小规模纳税人收到专票后如何处理
  • 保险公司代征的税收
  • 发票没金额能开吗
  • 经营性现金流量净额是什么意思
  • 小企业会计准则没有以前年度损益调整科目
  • 高新技术企业所得税减免怎么算
  • 计提工会经费为什么是增项
  • 2020劳务退税怎么退
  • 补开发票怎么做分录?
  • 企业取得政府财政资金,收入时间如何确认?
  • 工业企业购买电机会计分录
  • 企业出租设备取得租金收入要交增值税吗
  • 单位收到社保补缴通知书后怎么办
  • 增值税进项税额在借方还是贷方
  • 对公账户开通网银有什么好处
  • 低于成本价销售的税务风险
  • 一般纳税人税控盘维护费会计分录
  • 进项税期末有余额吗
  • 发票开出多久可以作废
  • 税务局报表利润表本期金额
  • 10万以下免征增值税 文件
  • 月末一次加权平均法是什么意思
  • 什么叫应付账款科目
  • 报税残疾人保障金怎么算
  • 企业并购效益
  • 有什么办法可以快速减肥
  • windows10提示更新11
  • 此设备某些文件可能存在问题
  • phpcrawl
  • 企业会计的日常行为准则
  • upload靶场搭建
  • thinkphp 登录功能
  • 阿里php面试题
  • 奥杜邦的祈祷经典语录
  • php 断点续传
  • 普通纳税人怎么交税
  • ChatGPT中国电话不能注册
  • python猜数字1到1000代码
  • 中小型科技企业所面临的普遍问题是资金缺乏
  • 企业所得税年报滞纳金从哪天开始算
  • 航天信息服务费的会计分录
  • 学电脑哪个网站比较好
  • mongodb数据库的层次结构
  • 简述银行存款对应的业务
  • 电子汇票提示付款申请
  • 代垫电费收回开票吗
  • 跨年暂估成本如何冲销
  • 投资公司如何运作
  • 保险返点返20怎么算
  • 营改增是从什么时候开始实施的
  • 上年的应收帐款怎么记账
  • 军工科研事业单位会计制度
  • 企业所得税收入是含税还是不含税
  • 汽车贷款利息计算公式计算器
  • 备查账依据什么登记
  • 购买土地会计分录及摊销分录
  • sql语句递归
  • win8/10whql
  • 回收站清空文件怎么恢复?试试这三个方法找回!
  • macbookpro日历
  • mac系统 硬盘
  • linux oracle 12505
  • linux自动获取校时服务器时间
  • win8虚拟内存怎么设置最好
  • windows10无法安装
  • win7的记事本在哪里打开
  • Win10 Mobile 14283红石预览版有哪些机型可以安装?
  • jQuery实现彩带延伸效果的网页加载条loading动画
  • android的handler
  • js获取指定元素
  • 手把手教你学python
  • shell编程入门
  • 如何用dos修复引导
  • node发送邮箱
  • jquery动态添加元素
  • Android shape 梯形
  • 苗木增值税发票税率
  • 公司注销时注册资金未缴完
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设