Bladeren bron

边角面优先级

AnlaAnla 2 weken geleden
bovenliggende
commit
dbce6a4c45
1 gewijzigde bestanden met toevoegingen van 19 en 20 verwijderingen
  1. 19 20
      app/utils/defect_inference/ClassifyEdgeCorner.py

+ 19 - 20
app/utils/defect_inference/ClassifyEdgeCorner.py

@@ -142,27 +142,26 @@ class ClassifyEdgeCorner:
             center_point = tuple(defect['min_rect'][0])
             center_point = tuple(defect['min_rect'][0])
 
 
             # --- 判定逻辑优先级 ---
             # --- 判定逻辑优先级 ---
-
-            # 优先级 1: 角 (Corner)
-            is_corner = False
-            for region in corner_regions:
-                # pointPolygonTest: >0 内部, =0 边界, <0 外部
-                if cv2.pointPolygonTest(region, center_point, False) >= 0:
-                    is_corner = True
-                    break
-
-            if is_corner:
-                defect['defect_type'] = 'corner'
+            # 优先级 1: 面 (Face)
+            # 如果点在内缩矩形内部,且不是角,那就是面
+            is_face = False
+            if face_region is not None:
+                if cv2.pointPolygonTest(face_region, center_point, False) >= 0:
+                    is_face = True
+
+            if is_face:
+                defect['defect_type'] = 'face'
             else:
             else:
-                # 优先级 2: 面 (Face)
-                # 如果点在内缩矩形内部,且不是角,那就是面
-                is_face = False
-                if face_region is not None:
-                    if cv2.pointPolygonTest(face_region, center_point, False) >= 0:
-                        is_face = True
-
-                if is_face:
-                    defect['defect_type'] = 'face'
+                # 优先级 2: 角 (Corner)
+                is_corner = False
+                for region in corner_regions:
+                    # pointPolygonTest: >0 内部, =0 边界, <0 外部
+                    if cv2.pointPolygonTest(region, center_point, False) >= 0:
+                        is_corner = True
+                        break
+
+                if is_corner:
+                    defect['defect_type'] = 'corner'
                 else:
                 else:
                     # 优先级 3: 边 (Edge)
                     # 优先级 3: 边 (Edge)
                     # 既不在角区,也不在面区(内框)里,但还在处理范围内,那就是边
                     # 既不在角区,也不在面区(内框)里,但还在处理范围内,那就是边