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

Method process

modules/basic_shape_processor.py:1369–1426  ·  view source on GitHub ↗

处理入口 Args: context: 处理上下文 Returns: ProcessingResult

(self, context: ProcessingContext)

Source from the content-addressed store, hash-verified

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)}")
1407 self._log(f"元素{elem.id}处理失败: {e}")
1408
1409 # CV补充检测
1410 cv_added_count = 0
1411 if self.enable_cv_detection:
1412 cv_added_count = self._run_cv_detection(context, cv2_image)
1413
1414 self._log(f"处理完成: {processed_count}个SAM3图形, {cv_added_count}个CV补充")
1415
1416 return ProcessingResult(
1417 success=True,
1418 elements=context.elements,
1419 canvas_width=context.canvas_width,
1420 canvas_height=context.canvas_height,
1421 metadata={
1422 'processed_count': processed_count,
1423 'cv_added_count': cv_added_count,
1424 'total_to_process': len(elements_to_process)
1425 }
1426 )

Callers 1

extract_shape_colorsFunction · 0.95

Calls 5

_process_elementMethod · 0.95
_run_cv_detectionMethod · 0.95
ProcessingResultClass · 0.85
_logMethod · 0.80

Tested by

no test coverage detected