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.circlecv2.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 在人体姿态检测和关键点绘制中的具体应用。

OpenCV 实战:人体姿态检测与关键点绘制

原文地址: https://www.cveoy.top/t/topic/gQ1q 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录