本文主要是介绍姿态估计_超简易demo,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
// 所以所谓姿态估计到底怎么实现?
// paper核心代码有点难找,所以先看个简单实现感受一下
Mediapipe
Mediapipe是主要用于构建多模式音频,视频或任何时间序列数据的框架。借助MediaPipe框架,可以构建令人印象深刻的ML管道,例如TensorFlow,TFLite等推理模型以及媒体处理功能。
pip install mediapipe
demo
import cv2
import mediapipe as mp
import time# 初始化 Mediapipe Pose 模型
mpPose = mp.solutions.pose
pose = mpPose.Pose()
mpDraw = mp.solutions.drawing_utils# 打开视频文件
cap = cv2.VideoCapture('C:/Users/HP/Downloads/dancing.mp4')pTime = 0 # 上一帧的时间戳# 进入视频帧处理的循环
while True:# 读取视频帧success, img = cap.read()# 如果读取失败,跳出循环if success is False:break# 将 BGR 格式的图像转换为 RGB 格式imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)# 使用 Mediapipe Pose 模型进行姿势检测results = pose.process(imgRGB)# 如果检测结果为空,继续下一帧处理if results is None:continue# 打印姿势关键点的位置信息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.shapeprint(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 = cTimecv2.putText(img, str(int(fps)), (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (255, 0, 0), 3)# 显示处理后的图像cv2.imshow("Image", img)key = cv2.waitKey(1) & 0xFF # 等待按键输入,延迟1ms# 清理窗口和释放视频流
cv2.destroyAllWindows()
cap.release()
结果
这篇关于姿态估计_超简易demo的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!