diff --git a/app/service/design_fast/pipeline/loading.py b/app/service/design_fast/pipeline/loading.py index 5a55d9d..85d1fb1 100644 --- a/app/service/design_fast/pipeline/loading.py +++ b/app/service/design_fast/pipeline/loading.py @@ -1,9 +1,6 @@ -import io import logging import cv2 -import numpy as np -from PIL import Image from app.service.utils.new_oss_client import oss_get_image @@ -38,6 +35,18 @@ class LoadImage: def __call__(self, result): result['image'], result['pre_mask'] = self.read_image(result['path']) + + # 判断是否resize sketch 保留ori image 用于模型输入 + result['ori_image'] = result['image'] + if result['resize_scale'][0] != 0 and result['resize_scale'][1] != 0: + height, width = result['image'].shape[:2] + # 计算新的宽度和高度 + new_width = int(width * result['resize_scale'][0]) + new_height = int(height * result['resize_scale'][1]) + # 使用cv2.resize()函数进行缩放 + result['image'] = cv2.resize(result['image'], (new_width, new_height)) + if result['pre_mask'] is not None: + result['pre_mask'] = cv2.resize(result['pre_mask'], (new_width, new_height)) result['gray'] = cv2.cvtColor(result['image'], cv2.COLOR_BGR2GRAY) result['keypoint'] = self.get_keypoint(result['name']) result['img_shape'] = result['image'].shape diff --git a/app/service/design_fast/pipeline/segmentation.py b/app/service/design_fast/pipeline/segmentation.py index 0c9c51e..2ad1a57 100644 --- a/app/service/design_fast/pipeline/segmentation.py +++ b/app/service/design_fast/pipeline/segmentation.py @@ -36,12 +36,27 @@ class Segmentation: # preview 过模型 不缓存 if "preview_submit" in result.keys() and result['preview_submit'] == "preview": # 推理获得seg 结果 - seg_result = get_seg_result(result["image_id"], result['image']) + seg_result = get_seg_result(result["image_id"], result['ori_image']) + if result['resize_scale'][0] != 0 and result['resize_scale'][1] != 0: + height, width = seg_result.shape[:2] + # 计算新的宽度和高度 + new_width = int(width * result['resize_scale'][0]) + new_height = int(height * result['resize_scale'][1]) + # 使用cv2.resize()函数进行缩放 + seg_result = cv2.resize(seg_result, (new_width, new_height)) # submit 过模型 缓存 elif "preview_submit" in result.keys() and result['preview_submit'] == "submit": # 推理获得seg 结果 - seg_result = get_seg_result(result["image_id"], result['image']) - self.save_seg_result(seg_result, result['image_id']) + seg_result = get_seg_result(result["image_id"], result['ori_image']) + seg_result_save = seg_result + if result['resize_scale'][0] != 0 and result['resize_scale'][1] != 0: + height, width = seg_result.shape[:2] + # 计算新的宽度和高度 + new_width = int(width * result['resize_scale'][0]) + new_height = int(height * result['resize_scale'][1]) + # 使用cv2.resize()函数进行缩放 + seg_result = cv2.resize(seg_result, (new_width, new_height)) + self.save_seg_result(seg_result_save, result['image_id']) # null 正常流程 加载本地缓存 无缓存则过模型 else: # 本地查询seg 缓存是否存在 @@ -49,8 +64,16 @@ class Segmentation: # 判断缓存和实际图片size是否相同 if not _ or result["image"].shape[:2] != seg_result.shape: # 推理获得seg 结果 - seg_result = get_seg_result(result["image_id"], result['image']) - self.save_seg_result(seg_result, result['image_id']) + seg_result = get_seg_result(result["image_id"], result['ori_image']) + seg_result_save = seg_result + if result['resize_scale'][0] != 0 and result['resize_scale'][1] != 0: + height, width = seg_result.shape[:2] + # 计算新的宽度和高度 + new_width = int(width * result['resize_scale'][0]) + new_height = int(height * result['resize_scale'][1]) + # 使用cv2.resize()函数进行缩放 + seg_result = cv2.resize(seg_result, (new_width, new_height)) + self.save_seg_result(seg_result_save, result['image_id']) result['seg_result'] = seg_result # 处理前片后片