|
|
@@ -7,7 +7,7 @@ def convert_internal_to_labelme(image_path: str, internal_json: dict) -> dict:
|
|
|
img_w = result.get("imageWidth", 0)
|
|
|
|
|
|
labelme_data = {
|
|
|
- "version": "5.0.1",
|
|
|
+ "version": "5.5.0",
|
|
|
"flags": {},
|
|
|
"shapes": [],
|
|
|
"imagePath": image_path.lstrip("/\\"), # 去除开头的斜杠
|
|
|
@@ -16,32 +16,8 @@ def convert_internal_to_labelme(image_path: str, internal_json: dict) -> dict:
|
|
|
"imageWidth": img_w
|
|
|
}
|
|
|
|
|
|
- # 1. 处理缺陷 (Defects)
|
|
|
- defect_result = result.get("defect_result", {})
|
|
|
- defects = defect_result.get("defects", [])
|
|
|
-
|
|
|
- for defect in defects:
|
|
|
- shape = {
|
|
|
- "label": defect.get("label", "unknown"),
|
|
|
- "points": defect.get("points", []),
|
|
|
- "group_id": None,
|
|
|
- "description": "",
|
|
|
- "shape_type": "polygon",
|
|
|
- "flags": {},
|
|
|
- # 我们将系统特有的字段暂存到 extra_info 中,或者直接放在 shape 根目录下
|
|
|
- # LabelMe 打开时会忽略这些额外字段,但保存时通常会保留它们 (取决于版本)
|
|
|
- # 为了安全,关键信息最好也保留
|
|
|
- "system_data": {
|
|
|
- "confidence": defect.get("confidence"),
|
|
|
- "defect_type": defect.get("defect_type"),
|
|
|
- "score": defect.get("score"),
|
|
|
- "edit_type": defect.get("edit_type", "edit")
|
|
|
- }
|
|
|
- }
|
|
|
- labelme_data["shapes"].append(shape)
|
|
|
-
|
|
|
- # 2. 处理框 (Center Result -> Inner/Outer Box)
|
|
|
- # 按照需求:inner_box 放在倒数第二个,outer_box 放在最下面 (列表最后)
|
|
|
+ # 1. 处理框 (Center Result -> Inner/Outer Box)
|
|
|
+ # inner_box 放在第二个,outer_box 放在最上面
|
|
|
center_result = result.get("center_result", {})
|
|
|
box_result = center_result.get("box_result", {})
|
|
|
|
|
|
@@ -76,12 +52,36 @@ def convert_internal_to_labelme(image_path: str, internal_json: dict) -> dict:
|
|
|
"flags": {}
|
|
|
}
|
|
|
|
|
|
- # 添加到列表尾部
|
|
|
+ # 添加到列表头部
|
|
|
+ if outer_shape:
|
|
|
+ labelme_data["shapes"].append(outer_shape)
|
|
|
+
|
|
|
if inner_shape:
|
|
|
labelme_data["shapes"].append(inner_shape)
|
|
|
|
|
|
- if outer_shape:
|
|
|
- labelme_data["shapes"].append(outer_shape)
|
|
|
+ # 2. 处理缺陷 (Defects)
|
|
|
+ defect_result = result.get("defect_result", {})
|
|
|
+ defects = defect_result.get("defects", [])
|
|
|
+
|
|
|
+ for defect in defects:
|
|
|
+ shape = {
|
|
|
+ "label": defect.get("label", "unknown"),
|
|
|
+ "points": defect.get("points", []),
|
|
|
+ "group_id": None,
|
|
|
+ "description": "",
|
|
|
+ "shape_type": "polygon",
|
|
|
+ "flags": {},
|
|
|
+ # 我们将系统特有的字段暂存到 extra_info 中,或者直接放在 shape 根目录下
|
|
|
+ # LabelMe 打开时会忽略这些额外字段,但保存时通常会保留它们 (取决于版本)
|
|
|
+ # 为了安全,关键信息最好也保留
|
|
|
+ "system_data": {
|
|
|
+ "confidence": defect.get("confidence"),
|
|
|
+ "defect_type": defect.get("defect_type"),
|
|
|
+ "score": defect.get("score"),
|
|
|
+ "edit_type": defect.get("edit_type", "edit")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ labelme_data["shapes"].append(shape)
|
|
|
|
|
|
return labelme_data
|
|
|
|