|
import numpy as np |
|
import math |
|
from models.pose_estimator.pose_estimator_model_setup import get_pose_estimation |
|
|
|
def applyFeetApartError(filepath, pose_pred=None, diver_detector=None, pose_model=None): |
|
if pose_pred is None and filepath != "": |
|
diver_box, pose_pred = get_pose_estimation(filepath, diver_detector=diver_detector, pose_model=pose_model) |
|
if pose_pred is not None: |
|
pose_pred = np.array(pose_pred)[0] |
|
average_knee = [np.mean((pose_pred[4][0], pose_pred[1][0])), np.mean((pose_pred[4][1], pose_pred[1][1]))] |
|
vector1 = [pose_pred[5][0] - average_knee[0], pose_pred[5][1] - average_knee[1]] |
|
vector2 = [pose_pred[0][0] - average_knee[0], pose_pred[0][1] - average_knee[1]] |
|
unit_vector_1 = vector1 / np.linalg.norm(vector1) |
|
unit_vector_2 = vector2 / np.linalg.norm(vector2) |
|
dot_product = np.dot(unit_vector_1, unit_vector_2) |
|
angle = math.degrees(np.arccos(dot_product)) |
|
return angle |
|
else: |
|
|
|
return None |