lyc8503 преди 4 години
родител
ревизия
d5231d105b
променени са 1 файла, в които са добавени 76 реда и са изтрити 1 реда
  1. 76 1
      backend_refactor/service/video_analyzer.py

+ 76 - 1
backend_refactor/service/video_analyzer.py

@@ -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):