|
|
@@ -27,73 +27,73 @@ class ScoreService:
|
|
|
imageHeight, imageWidth = img_bgr.shape[:2]
|
|
|
|
|
|
logger.info("开始进行卡片分数推理")
|
|
|
- if score_type == 'front_corner_edge' or score_type == 'front_face' or score_type == "front_face_ring_light":
|
|
|
+ if score_type == 'front_ring' or score_type == 'front_coaxial':
|
|
|
center_data = self.defect_service.defect_inference("pokemon_front_card_center", img_bgr.copy())
|
|
|
else:
|
|
|
center_data = self.defect_service.defect_inference("pokemon_back_card_center", img_bgr.copy())
|
|
|
|
|
|
if is_reflect_card:
|
|
|
- if score_type == 'front_corner_edge':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_front_corner_reflect_defect',
|
|
|
- img_bgr.copy())
|
|
|
- elif score_type == 'front_face':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_front_face_reflect_defect', img_bgr.copy())
|
|
|
- elif score_type == 'back_corner_edge':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_back_corner_defect', img_bgr.copy())
|
|
|
- elif score_type == 'back_face':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_back_face_defect', img_bgr.copy())
|
|
|
- elif score_type == 'front_face_ring_light':
|
|
|
+ if score_type == 'front_ring':
|
|
|
defect_data = self.defect_service.defect_inference('pokemon_front_face_reflect_ring_light_defect',
|
|
|
img_bgr.copy())
|
|
|
- elif score_type == 'back_face_ring_light':
|
|
|
+ elif score_type == 'front_coaxial':
|
|
|
+ defect_data = self.defect_service.defect_inference('pokemon_front_face_reflect_coaxial_light_defect',
|
|
|
+ img_bgr.copy())
|
|
|
+ elif score_type == 'back_ring':
|
|
|
defect_data = self.defect_service.defect_inference('pokemon_back_face_ring_light_defect',
|
|
|
img_bgr.copy())
|
|
|
+ elif score_type == 'back_coaxial':
|
|
|
+ defect_data = self.defect_service.defect_inference('pokemon_back_face_coaxial_light_defect',
|
|
|
+ img_bgr.copy())
|
|
|
else:
|
|
|
return {}
|
|
|
else:
|
|
|
- if score_type == 'front_corner_edge':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_front_corner_no_reflect_defect',
|
|
|
+ if score_type == 'front_ring':
|
|
|
+ defect_data = self.defect_service.defect_inference('pokemon_front_face_no_reflect_ring_light_defect',
|
|
|
img_bgr.copy())
|
|
|
- elif score_type == 'front_face':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_front_face_no_reflect_defect',
|
|
|
- img_bgr.copy())
|
|
|
- elif score_type == 'back_corner_edge':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_back_corner_defect', img_bgr.copy())
|
|
|
- elif score_type == 'back_face':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_back_face_defect', img_bgr.copy())
|
|
|
- elif score_type == 'front_face_ring_light':
|
|
|
- defect_data = self.defect_service.defect_inference('pokemon_front_face_reflect_ring_light_defect',
|
|
|
+ elif score_type == 'front_coaxial':
|
|
|
+ defect_data = self.defect_service.defect_inference('pokemon_front_face_no_reflect_coaxial_light_defect',
|
|
|
img_bgr.copy())
|
|
|
- elif score_type == 'back_face_ring_light':
|
|
|
+ elif score_type == 'back_ring':
|
|
|
defect_data = self.defect_service.defect_inference('pokemon_back_face_ring_light_defect',
|
|
|
img_bgr.copy())
|
|
|
+ elif score_type == 'back_coaxial':
|
|
|
+ defect_data = self.defect_service.defect_inference('pokemon_back_face_coaxial_light_defect',
|
|
|
+ img_bgr.copy())
|
|
|
else:
|
|
|
return {}
|
|
|
|
|
|
logger.info("模型推理结束, 开始计算分数")
|
|
|
- if score_type == 'front_corner_edge' or score_type == 'front_face' or score_type=="front_face_ring_light":
|
|
|
+ if score_type == 'front_ring' or score_type == 'front_coaxial':
|
|
|
card_aspect = "front"
|
|
|
else:
|
|
|
card_aspect = "back"
|
|
|
- if score_type == 'front_corner_edge' or score_type == 'back_corner_edge':
|
|
|
- card_defect_type = "corner_edge"
|
|
|
+ if score_type == 'front_ring' or score_type == 'back_ring':
|
|
|
+ card_light_type = "ring"
|
|
|
else:
|
|
|
- card_defect_type = "face"
|
|
|
+ card_light_type = "coaxial"
|
|
|
|
|
|
- if card_defect_type == 'corner_edge':
|
|
|
+ if card_light_type == 'ring':
|
|
|
center_score_data = self.card_scorer.calculate_centering_score(card_aspect, center_data, True)
|
|
|
|
|
|
- # 先计算角的分数, 会把分数写入json, 然后传入刚写好的, 继续写边的分数
|
|
|
- corner_score_data = self.card_scorer.calculate_defect_score('corner', card_aspect, defect_data, True)
|
|
|
- defect_score_data = self.card_scorer.calculate_defect_score('edge', card_aspect, corner_score_data, True)
|
|
|
- elif card_defect_type == 'face':
|
|
|
+ # 计算角, 边, 面的分数, 会把分数写入json, 然后传入刚写好的, 继续写边的分数
|
|
|
+ defect_data = self.card_scorer.calculate_defect_score('corner', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
+ defect_data = self.card_scorer.calculate_defect_score('edge', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
+ defect_score_data = self.card_scorer.calculate_defect_score('face', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
+ elif card_light_type == 'coaxial':
|
|
|
+ # 居中
|
|
|
center_score_data = {}
|
|
|
- defect_score_data = self.card_scorer.calculate_defect_score('face', card_aspect, defect_data, True)
|
|
|
+ # 同轴光照片只计算面缺陷
|
|
|
+ defect_score_data = self.card_scorer.calculate_defect_score('face', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
else:
|
|
|
return {}
|
|
|
|
|
|
result_json = self.card_scorer.formate_one_card_result(center_score_data, defect_score_data,
|
|
|
- card_defect_type=card_defect_type,
|
|
|
+ card_light_type=card_light_type,
|
|
|
card_aspect=card_aspect,
|
|
|
imageHeight=imageHeight,
|
|
|
imageWidth=imageWidth)
|
|
|
@@ -111,44 +111,51 @@ class ScoreService:
|
|
|
imageHeight = json_data["result"].get('imageHeight', 0)
|
|
|
imageWidth = json_data["result"].get('imageWidth', 0)
|
|
|
|
|
|
- # 边角和面 类型分类
|
|
|
- if score_type == 'front_corner_edge' or score_type == 'back_corner_edge':
|
|
|
- inference_type = "corner_edge"
|
|
|
- else:
|
|
|
- inference_type = "face"
|
|
|
-
|
|
|
# 正反面类型分类
|
|
|
- if score_type == 'front_corner_edge' or score_type == 'front_face':
|
|
|
+ if score_type == 'front_ring' or score_type == 'front_coaxial':
|
|
|
card_aspect = "front"
|
|
|
else:
|
|
|
card_aspect = "back"
|
|
|
|
|
|
+ if score_type == 'front_ring' or score_type == 'back_ring':
|
|
|
+ card_light_type = "ring"
|
|
|
+ else:
|
|
|
+ card_light_type = "coaxial"
|
|
|
+
|
|
|
logger.info("开始进行缺陷信息重计算")
|
|
|
- defect_data = self.defect_service.re_inference_from_json(inference_type=inference_type,
|
|
|
+ defect_data = self.defect_service.re_inference_from_json(card_light_type=card_light_type,
|
|
|
center_json=center_json_data,
|
|
|
defect_json=defect_json_data)
|
|
|
|
|
|
logger.info("开始重新计算分数")
|
|
|
- if inference_type == 'corner_edge':
|
|
|
+ if card_light_type == 'ring':
|
|
|
logger.info("开始进行居中信息重计算")
|
|
|
- center_data = self.defect_service.re_inference_from_json(inference_type="center",
|
|
|
+ center_data = self.defect_service.re_inference_from_json(card_light_type="center",
|
|
|
center_json=center_json_data,
|
|
|
defect_json=defect_json_data)
|
|
|
|
|
|
center_score_data = self.card_scorer.calculate_centering_score(card_aspect, center_data, True)
|
|
|
|
|
|
- # 先计算角的分数, 会把分数写入json, 然后传入刚写好的, 继续写边的分数
|
|
|
- corner_score_data = self.card_scorer.calculate_defect_score('corner', card_aspect, defect_data, True)
|
|
|
- defect_score_data = self.card_scorer.calculate_defect_score('edge', card_aspect, corner_score_data, True)
|
|
|
- elif inference_type == 'face':
|
|
|
- # 面类型不计算居中
|
|
|
+ # 计算角, 边, 面的分数, 会把分数写入json, 然后传入刚写好的, 继续写边的分数
|
|
|
+ logger.info("开始重新计算:边角面")
|
|
|
+ defect_data = self.card_scorer.calculate_defect_score('corner', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
+ defect_data = self.card_scorer.calculate_defect_score('edge', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
+ defect_score_data = self.card_scorer.calculate_defect_score('face', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
+ elif card_light_type == 'coaxial':
|
|
|
+ # 居中
|
|
|
center_score_data = {}
|
|
|
- defect_score_data = self.card_scorer.calculate_defect_score('face', card_aspect, defect_data, True)
|
|
|
+ # 同轴光照片只计算面缺陷
|
|
|
+ logger.info("开始重新计算:面")
|
|
|
+ defect_score_data = self.card_scorer.calculate_defect_score('face', card_aspect, card_light_type,
|
|
|
+ defect_data, True)
|
|
|
else:
|
|
|
return {}
|
|
|
|
|
|
result_json = self.card_scorer.formate_one_card_result(center_score_data, defect_score_data,
|
|
|
- card_defect_type=inference_type,
|
|
|
+ card_light_type=card_light_type,
|
|
|
card_aspect=card_aspect,
|
|
|
imageHeight=imageHeight,
|
|
|
imageWidth=imageWidth)
|