Browse Source

用rect 计算外框和进行判断的改进

AnlaAnla 1 month ago
parent
commit
089b23f470

+ 1 - 0
app/services/defect_service.py

@@ -247,6 +247,7 @@ class DefectInferenceService:
         outer_result = center_json['box_result']['outer_box']
 
         if inference_type == "center":
+            logger.info("居中重计算")
             inner_rect = inner_result['shapes'][0]['rect_box']
             outer_rect = outer_result['shapes'][0]['rect_box']
             center_result, inner_rect_box, outer_rect_box = analyze_centering_rect(inner_rect, outer_rect)

+ 10 - 1
app/utils/defect_inference/ClassifyEdgeCorner.py

@@ -17,7 +17,16 @@ class ClassifyEdgeCorner:
         if not outer_box_data or 'shapes' not in outer_box_data or not outer_box_data['shapes']:
             raise ValueError("无效的外框数据格式。")
 
-        points = outer_box_data['shapes'][0]['points']
+        get_point = outer_box_data['shapes'][0].get('points', None)
+        if get_point is None:
+            logger.info("外框计算非第一次, 取 rect_box")
+            get_point = outer_box_data['shapes'][0].get('rect_box', None)
+            if get_point is None:
+                logger.error("外框数据缺失: rect_box")
+                raise ValueError("外框数据缺失: rect_box")
+
+        # points = outer_box_data['shapes'][0]['points']
+        points = get_point
         contour = np.array(points, dtype=np.int32)
 
         # 计算最小面积旋转矩形

+ 1 - 1
app/utils/defect_inference/arean_anylize_draw.py

@@ -280,7 +280,7 @@ class DefectProcessor:
 
         for defect in json_data['defects']:
             label = defect.get('label', 'unlabeled')
-            points = defect.get('rect_box')
+            points = defect.get('points')
             if not points:
                 continue