MCPcopy Create free account
hub / github.com/BIT-DataLab/Edit-Banana / BasicShapeProcessor

Class BasicShapeProcessor

modules/basic_shape_processor.py:1349–1597  ·  view source on GitHub ↗

基本图形处理模块 处理流程: 1. 从context.elements中筛选基本图形 2. 对每个图形提取填充色和描边色 3. 生成XML片段 4. 可选:运行CV补充检测遗漏的矩形

Source from the content-addressed store, hash-verified

1347
1348# ======================== 基本图形处理器 ========================
1349class BasicShapeProcessor(BaseProcessor):
1350 """
1351 基本图形处理模块
1352
1353 处理流程:
1354 1. 从context.elements中筛选基本图形
1355 2. 对每个图形提取填充色和描边色
1356 3. 生成XML片段
1357 4. 可选:运行CV补充检测遗漏的矩形
1358 """
1359
1360 def __init__(self, config=None, enable_cv_detection: bool = True):
1361 """
1362 Args:
1363 config: 处理配置
1364 enable_cv_detection: 是否启用CV补充检测(检测SAM3遗漏的矩形)
1365 """
1366 super().__init__(config)
1367 self.enable_cv_detection = enable_cv_detection
1368
1369 def process(self, context: ProcessingContext) -> ProcessingResult:
1370 """
1371 处理入口
1372
1373 Args:
1374 context: 处理上下文
1375
1376 Returns:
1377 ProcessingResult
1378 """
1379 self._log("开始处理基本图形")
1380
1381 if not context.image_path or not os.path.exists(context.image_path):
1382 return ProcessingResult(
1383 success=False,
1384 error_message="图片路径无效"
1385 )
1386
1387 cv2_image = cv2.imread(context.image_path)
1388 if cv2_image is None:
1389 return ProcessingResult(
1390 success=False,
1391 error_message="无法读取图片"
1392 )
1393
1394 # 筛选基本图形
1395 elements_to_process = self._get_elements_to_process(context.elements)
1396
1397 # 计算画布面积,用于判断大面积元素
1398 canvas_area = context.canvas_width * context.canvas_height
1399
1400 processed_count = 0
1401 for elem in elements_to_process:
1402 try:
1403 self._process_element(elem, cv2_image, canvas_area)
1404 processed_count += 1
1405 except Exception as e:
1406 elem.processing_notes.append(f"处理失败: {str(e)}")

Callers 2

shape_processorMethod · 0.90
extract_shape_colorsFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected