pose-deep-learning / A14 /example_usage.py
Bachstelze
add mediapipe model loading
2531980
Raw
History Blame Contribute Delete
2.4 kB
"""
Example usage of MediaPipePoseEstimator.
This script demonstrates how to use the MediaPipePoseEstimator to detect
pose landmarks in an image and visualize the results.
"""
import cv2
import numpy as np
from mediapipe_pose_estimator import MediaPipePoseEstimator
def main():
# Initialize the estimator with the model file
# Note: You need to have the pose_landmarker_lite.task file in the current directory
try:
estimator = MediaPipePoseEstimator(model_asset_path='pose_landmarker_lite.task')
except Exception as e:
print(f"Error initializing estimator: {e}")
print("Make sure you have downloaded the pose_landmarker_lite.task model file")
print("Run: python download_model.py")
return
# Create a sample image or load an existing one
# For this example, we'll create a blank image
sample_image = np.zeros((480, 640, 3), dtype=np.uint8)
# Add a simple stick figure for testing (optional)
# Head
cv2.circle(sample_image, (320, 100), 30, (255, 255, 255), -1)
# Body
cv2.line(sample_image, (320, 130), (320, 250), (255, 255, 255), 2)
# Arms
cv2.line(sample_image, (270, 180), (370, 180), (255, 255, 255), 2)
# Legs
cv2.line(sample_image, (320, 250), (280, 320), (255, 255, 255), 2)
cv2.line(sample_image, (320, 250), (360, 320), (255, 255, 255), 2)
print("Detecting pose in sample image...")
# Detect pose
result = estimator.detect_pose(sample_image)
print(f"Inference time: {result['inference_time_ms']:.2f} ms")
print(f"Number of keypoints: {len(result['keypoints'])}")
# Print detected keypoints with confidence > 0.1
print("\nDetected keypoints (confidence > 0.1):")
for name, kp in result['keypoints'].items():
if kp['confidence'] > 0.1:
print(f" {name}: ({kp['x']:.3f}, {kp['y']:.3f}) conf={kp['confidence']:.3f}")
# Draw keypoints on the image
annotated_image = estimator.draw_keypoints(sample_image, result)
# Display the result
cv2.imshow('Original Image', sample_image)
cv2.imshow('Annotated Image', annotated_image)
print("\nPress any key to close windows...")
cv2.waitKey(0)
cv2.destroyAllWindows()
# Save the annotated image
cv2.imwrite('annotated_sample.jpg', annotated_image)
print("Annotated image saved as 'annotated_sample.jpg'")
if __name__ == '__main__':
main()