|
|
@@ -330,6 +330,74 @@ def analyse_npy_side_shendun(data):
|
|
|
return result
|
|
|
|
|
|
|
|
|
+def ignore_data_jump(result_ig: dict):
|
|
|
+ max_index = max(result_ig.keys())
|
|
|
+ min_index = min(result_ig.keys())
|
|
|
+
|
|
|
+ max_leg_knee_angle = result_ig[min_index]["knee_ankle_angle"]
|
|
|
+ max_leg_knee_angle_num = int(min_index)
|
|
|
+ less_angle = 100
|
|
|
+ less_num = 1
|
|
|
+ ankle = result_ig[min_index]["leg_heigh"]
|
|
|
+ max_leg_knee_hip_knee = math.fabs(
|
|
|
+ float(result_ig[min_index]["hip_knee_angle"]) - float(result_ig[min_index]["knee_ankle_angle"]))
|
|
|
+ max_l_h_num = 1
|
|
|
+ hip_hei_init = float(result_ig[min_index]["hip_heigh"])
|
|
|
+ # print("max")
|
|
|
+ # print(max_index)
|
|
|
+ # print(hip_hei_init)
|
|
|
+
|
|
|
+ for i in result_ig:
|
|
|
+ if int(i) <= max_index / 5:
|
|
|
+ if float(max_leg_knee_angle) < float(result_ig[i]["knee_ankle_angle"]):
|
|
|
+ max_leg_knee_angle_num = int(i)
|
|
|
+ max_leg_knee_angle = result_ig[i]["knee_ankle_angle"]
|
|
|
+ if int(i) <= max_index / 2 and int(i) > max_index / 3:
|
|
|
+ val = math.fabs(
|
|
|
+ math.fabs(float(result_ig[i]["hip_knee_angle"])) - math.fabs(float(result_ig[i]["knee_ankle_angle"])))
|
|
|
+ if (math.fabs(math.fabs(float(result_ig[i]["hip_knee_angle"])) - math.fabs(
|
|
|
+ float(result_ig[i]["knee_ankle_angle"]))) < less_angle):
|
|
|
+ less_angle = val
|
|
|
+ less_num = int(i)
|
|
|
+
|
|
|
+ if int(i) <= max_index and int(i) > (max_index / 3):
|
|
|
+
|
|
|
+ if (float(result_ig[i]["hip_heigh"])) < (float(hip_hei_init)) and max_l_h_num != 1:
|
|
|
+ break
|
|
|
+ if (math.fabs(math.fabs(float(result_ig[i]["hip_knee_angle"])) - math.fabs(
|
|
|
+ float(result_ig[i]["knee_ankle_angle"])))) > max_leg_knee_hip_knee and math.fabs(
|
|
|
+ float(result_ig[i]["leg_heigh"]) - float(ankle)) <= 20:
|
|
|
+ max_leg_knee_hip_knee = math.fabs(
|
|
|
+ float(result_ig[i]["hip_knee_angle"]) - math.fabs(float(result_ig[i]["knee_ankle_angle"])))
|
|
|
+ max_l_h_num = int(i)
|
|
|
+
|
|
|
+ # ankle=result_ig[i]["leg_heigh"]
|
|
|
+ # ankle_num=int(i)
|
|
|
+ # elif ankle!=1 and int(i)>=(le/3*2):
|
|
|
+ # break
|
|
|
+
|
|
|
+ print(max_leg_knee_angle)
|
|
|
+ print(max_leg_knee_angle_num)
|
|
|
+ print(less_num)
|
|
|
+ print(less_angle)
|
|
|
+ # print(ankle)
|
|
|
+ # print(ankle_num)
|
|
|
+ print(max_leg_knee_hip_knee)
|
|
|
+ print(max_l_h_num)
|
|
|
+ re = {}
|
|
|
+ re["1"] = {}
|
|
|
+ re["1"]["num"] = max_leg_knee_angle_num
|
|
|
+ re["1"]["val"] = max_leg_knee_angle
|
|
|
+ re["2"] = {}
|
|
|
+ re["2"]["num"] = less_num
|
|
|
+ re["2"]["val"] = less_angle
|
|
|
+ re["3"] = {}
|
|
|
+ re["3"]["num"] = max_l_h_num
|
|
|
+ re["3"]["val"] = max_leg_knee_hip_knee
|
|
|
+ print(re)
|
|
|
+
|
|
|
+ return re
|
|
|
+
|
|
|
|
|
|
class HighKneesVideoAnalyzer(BaseVideoAnalyzer):
|
|
|
def _do_analyze(self):
|
|
|
@@ -343,7 +411,14 @@ class CrunchVideoAnalyzer(BaseVideoAnalyzer):
|
|
|
|
|
|
class StandingLongJumpVideoAnalyzer(BaseVideoAnalyzer):
|
|
|
def _do_analyze(self):
|
|
|
- pass
|
|
|
+ frames_dir = UPLOAD_DIR + "frames/" + self.video_uuid + "/"
|
|
|
+ result = {}
|
|
|
+ for i in os.listdir(frames_dir):
|
|
|
+ if i.endswith(".npy"):
|
|
|
+ data = np.load(frames_dir + i)[0]
|
|
|
+ result_side = analyse_npy_side_jump(data) # Analyze each frame
|
|
|
+ result[int(i.replace(".jpg.npy", ""))] = result_side # Get the frame number to store the result
|
|
|
+ return ignore_data_jump(result)
|
|
|
|
|
|
|
|
|
class PlankVideoAnalyzer(BaseVideoAnalyzer):
|