| import numpy as np | |
| from CPR_Module.Common.keypoints import CocoKeypoints | |
| from CPR_Module.Common.logging_config import cpr_logger | |
| class ShouldersAnalyzer: | |
| """Calculate and store shoulder distance for CPR rescuer""" | |
| def __init__(self): | |
| self.shoulder_distance = None | |
| self.shoulder_distance_history = [] | |
| def calculate_shoulder_distance(self, rescuer_keypoints): | |
| """Calculate and store shoulder distance""" | |
| if rescuer_keypoints is None: | |
| return | |
| try: | |
| left = rescuer_keypoints[CocoKeypoints.LEFT_SHOULDER.value] | |
| right = rescuer_keypoints[CocoKeypoints.RIGHT_SHOULDER.value] | |
| distance = np.linalg.norm(np.array(left) - np.array(right)) | |
| return distance | |
| except Exception as e: | |
| cpr_logger.error(f"Shoulder distance error: {e}") | |
| return | |
| def reset_shoulder_distances(self): | |
| """Reset shoulder distances""" | |
| self.shoulder_distance_history = [] | |