点击上方“小白学视觉”,选择加"星标"或“置顶”
重磅干货,第一时间送达
介绍
人体姿态估计是一个非常有趣的领域,如果我们能够将诸如棒球摆动或投球等运动的人体姿势量化为数据,那么我们或许能够将数据转化为有用的见解,例如伤害预防或高级训练。
有一些开源人体姿态估计,例如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