前言
现在在姿态估计这一方面,OpenPose和Alphapose独领风骚,在多人姿态估计的领域发光。但两者环境配置对于初学者来讲非常的不友好,并且需要一定的硬件支持。这对于一些小伙伴只是想要进行单人姿态估计来讲,没有必要。 所以,今天我们就来介绍一个1分钟就能搭建的单人姿态估计平台的方法,并且介绍一个非常好用的计算机视觉库cvzone,希望对大家能有帮助!
cvzone资料
github:https://github.com/cvzone
class:https://www.computervision.zone/
cvzone安装
我们只需要简单的在终端输入以下的命令,就能够成功安装好用的cvzone啦!
pip install cvzone -i https://pypi.mirrors.ustc.edu.cn/simple/
当然,opencv_python也是必不可少的:
pip install opencv_python -i https://pypi.mirrors.ustc.edu.cn/simple/
还有mediapipe:
pip install mediapipe -i https://pypi.mirrors.ustc.edu.cn/simple/
Pose Estimation使用实例:
演示:
→
Code:
第一个函数preprocessing_picture用于处理单个图片,当然所谓之处理视频,其实也就是处理连续的多张图片,所以简单的加了第二个demo函数便也可以处理视频了!
import json import os from cvzone.PoseModule import PoseDetector import cv2 def preprocessing_picture(img, read_frame): # 关节点检测器 detector = PoseDetector() # 存放关节点信息 pose_dict = {} # 检测 img = detector.findPose(img) lmList, bboxInfo = detector.findPosition(img, bboxWithHands=False) # 如果检测到人体关节点 if bboxInfo: center = bboxInfo["center"] cv2.circle(img, center, 5, (255, 0, 255), cv2.FILLED) for lm in lmList: pose_dict[lm[0]] = (lm[1], lm[2]) if not os.path.exists('result'): os.path.makedirs('result') jsonFile_name = 'result/{}帧'.format(read_frame) + '.json' json_file = open(jsonFile_name, 'w') json_data = json.dumps(pose_dict) json_file.write(json_data) json_file.write('\n') json_file.close() else: return False return True def demo(video_path): # 获取视频 cap = cv2.VideoCapture(video_path) isopen = cap.isOpend() if not isopen: print("Err: Video is failure. Exiting ...") # 视频时长总帧数 total_frame = cap.get(cv2.CAP_PROP_FRAME_COUNT) # 帧数计数器 read_frame = 0 while (isopen): # 读取帧图像 ret, frame = cap.read() # 读取错误处理 if not ret: if read_frame < total_frame: # 读取错误 print("Err: Can't receive frame. Exiting ...") else: # 正常结束 print("Info: Stream is End") break # 帧数计数器+1 read_frame = read_frame + 1 # 处理 result = preprocessing_picture(frame, read_frame) if not result: print('第{}帧图像中没有检测到人体关节点!'.format(read_frame)) # 使用案例 if __name__ == '__main__': video_path = r'' demo(video_path)
关节点参考图片: