基于 OpenCV 和 OpenPose 的棒球挥杆人体姿势估计

本文介绍了如何结合OpenPose和OpenCV实现棒球挥杆的人体姿势估计。通过读取视频,应用OpenPose模型进行关键点检测,并在帧上绘制骨架。进一步地,文章展示了如何构建一个Streamlit Web应用,让用户可以上传视频进行分析,并通过Google Colab或Streamlit Share进行部署。
摘要由CSDN通过智能技术生成

点击上方“小白学视觉”,选择加"星标"或“置顶

重磅干货,第一时间送达

d7a4498e755c15d5f6afd4715cf9d72b.png


介绍

人体姿态估计是一个非常有趣的领域,如果我们能够将诸如棒球摆动或投球等运动的人体姿势量化为数据,那么我们或许能够将数据转化为有用的见解,例如伤害预防或高级训练。

有一些开源人体姿态估计,例如PoseNet和OpenPose,OpenPose 由 CMU 团队开发并得到广泛应用。

OpenPose

OpenPose 团队使用两个不同的数据集提供了两个预训练模型:多人数据集 (MPII) 和 COCO 数据集。COCO 模型产生 18 个点,MPII 模型产生 15 个点,我们将在这项工作中使用 MPII。

设置模型

首先,我们需要下载模型并将其保存到项目文件夹中。

protoFile = "openpose/mpi/pose_deploy_linevec_faster_4_stages.prototxt" 
weightsFile = "openpose/mpi/pose_iter_160000.caffemodel"

然后我们使用OpenCV的dnn模块来加载模型;

net = cv2.dnn.readNetFromCaffe(protoFile, weightsFile)


阅读视频

然后我们使用OpenCV逐帧读取视频:

# capture video
cap = cv2.VideoCapture(video_path)
# Check if video file is opened successfully
if (cap.isOpened() == False):
  print("Error opening video stream or file")
# Read until video is completed
while(cap.isOpened()):
# Capture frame-by-frame
    ret, frame = cap.read()
      if ret == True:
        frame = cv2.resize(frame, (width_out, int(width_out*height/width)), cv2.INTER_AR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白学视觉

您的赞赏是我们坚持下去的动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值