|
|
@@ -5,7 +5,6 @@ from app.core.logger import get_logger
|
|
|
from app.services.defect_service import DefectInferenceService
|
|
|
from app.services.card_rectify_and_center import CardRectifyAndCenter
|
|
|
from app.utils.score_inference.CardScorer import CardScorer
|
|
|
-from app.utils.json_data_formate import formate_one_card_result
|
|
|
import numpy as np
|
|
|
import json
|
|
|
|
|
|
@@ -25,7 +24,6 @@ class ScoreService:
|
|
|
logger.info("开始进行卡片居中和转正")
|
|
|
img_bgr = rectify_center_service.rectify_and_center(img_bgr)
|
|
|
|
|
|
-
|
|
|
logger.info("开始进行卡片分数推理")
|
|
|
if score_type == 'front_corner_edge' or score_type == 'front_face':
|
|
|
center_data = defect_service.defect_inference("pokemon_front_card_center", img_bgr.copy())
|
|
|
@@ -57,27 +55,29 @@ class ScoreService:
|
|
|
return {}
|
|
|
|
|
|
logger.info("模型推理结束, 开始计算分数")
|
|
|
-
|
|
|
if score_type == 'front_corner_edge' or score_type == 'front_face':
|
|
|
- center_score_data = card_scorer.calculate_centering_score('front', center_data, True)
|
|
|
+ card_aspect = "front"
|
|
|
else:
|
|
|
- center_score_data = card_scorer.calculate_centering_score('back', center_data, True)
|
|
|
+ card_aspect = "back"
|
|
|
+ if score_type == 'front_corner_edge' or score_type == 'back_corner_edge':
|
|
|
+ card_defect_type = "corner_edge"
|
|
|
+ else:
|
|
|
+ card_defect_type = "face"
|
|
|
+
|
|
|
+ center_score_data = card_scorer.calculate_centering_score(card_aspect, center_data, True)
|
|
|
|
|
|
- if score_type == 'front_corner_edge':
|
|
|
+ if card_defect_type == 'corner_edge':
|
|
|
# 先计算角的分数, 会把分数写入json, 然后传入刚写好的, 继续写边的分数
|
|
|
- corner_score_data = card_scorer.calculate_defect_score('corner', 'front', defect_data, True)
|
|
|
- defect_score_data = card_scorer.calculate_defect_score('edge', 'front', corner_score_data, True)
|
|
|
- elif score_type == 'front_face':
|
|
|
- defect_score_data = card_scorer.calculate_defect_score('face', 'front', defect_data, True)
|
|
|
- elif score_type == 'back_corner_edge':
|
|
|
- corner_score_data = card_scorer.calculate_defect_score('corner', 'back', defect_data, True)
|
|
|
- defect_score_data = card_scorer.calculate_defect_score('edge', 'back', corner_score_data, True)
|
|
|
- elif score_type == 'back_face':
|
|
|
- defect_score_data = card_scorer.calculate_defect_score('face', 'back', defect_data, True)
|
|
|
+ corner_score_data = card_scorer.calculate_defect_score('corner', card_aspect, defect_data, True)
|
|
|
+ defect_score_data = card_scorer.calculate_defect_score('edge', card_aspect, corner_score_data, True)
|
|
|
+ elif card_defect_type == 'face':
|
|
|
+ defect_score_data = card_scorer.calculate_defect_score('face', card_aspect, defect_data, True)
|
|
|
else:
|
|
|
return {}
|
|
|
|
|
|
- result_json = formate_one_card_result(center_score_data, defect_score_data)
|
|
|
+ result_json = card_scorer.formate_one_card_result(center_score_data, defect_score_data,
|
|
|
+ card_defect_type=card_defect_type,
|
|
|
+ card_aspect=card_aspect)
|
|
|
|
|
|
temp_score_json_path = settings.TEMP_WORK_DIR / f'{score_type}_score.json'
|
|
|
with open(temp_score_json_path, 'w', encoding='utf-8') as f:
|