OpenCV 实战:人体姿态检测与关键点绘制
OpenCV 在该示例中用于图像处理和显示。首先,使用 cv2.imshow 函数显示当前帧的结果。
cv2.imshow('MediaPipe Pose Detection press q exit', frame)
然后,使用 cv2.putText 函数在输出图像上显示角度值和动作类型。
cv2.putText(frame, 'Angle: {:.2f}'.format(angle), (5, 43),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 0, 255), 2)
cv2.putText(frame, 'Angle_rka: {:.2f}'.format(angle_rka), (5, 60),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (100, 15, 255), 2)
cv2.putText(frame, 'Angle_nwr: {:.2f}'.format(angle_nwr), (5, 80),
cv2.FONT_HERSHEY_SIMPLEX, 0.5, (0, 100, 255), 2)
cv2.putText(frame, poses_a, (5, 60),
cv2.FONT_HERSHEY_SIMPLEX, 1.1, (2, 2, 255), 2)
接下来,使用 cv2.circle 和 cv2.rectangle 函数绘制头部关键点和执剑关键点。
# 绘制头部关键点
nose = results.pose_landmarks.landmark[mp_pose.PoseLandmark.NOSE]
x, y = int(nose.x * width), int(nose.y * height)
cv2.circle(frame, (x, y), 20, (220, 200, 100), -1)
# 绘制执剑关键点
zhijian = results.pose_landmarks.landmark[mp_pose.PoseLandmark.RIGHT_THUMB]
x, y = int(zhijian.x * width), int(zhijian.y * height)
cv2.rectangle(frame, (x-20, y-20), (x+20, y+20), (0, 255, 0), -1)
最后,使用 cv2.putText 函数在输出图像上显示未检测到人体的信息。
cv2.putText(frame, 'No body detected', (50, 50),
cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 0, 255), 2)
同时,使用 cv2.waitKey 函数检测是否按下 q 键退出程序。
if cv2.waitKey(1) & 0xFF == ord('q'):
break
通过这些代码片段,我们可以清晰地看到 OpenCV 在人体姿态检测和关键点绘制中的具体应用。
原文地址: https://www.cveoy.top/t/topic/gQ1q 著作权归作者所有。请勿转载和采集!