From a6c237072e33f0386449e1bb52dff416490b3fd8 Mon Sep 17 00:00:00 2001 From: zhouchengrong Date: Fri, 7 Feb 2025 16:12:04 +0800 Subject: [PATCH] =?UTF-8?q?feat=EF=BC=88=E6=96=B0=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=89:=20fix=EF=BC=88=E4=BF=AE=E5=A4=8Dbug=EF=BC=89:=20docs?= =?UTF-8?q?=EF=BC=88=E6=96=87=E6=A1=A3=E5=8F=98=E6=9B=B4=EF=BC=89:=20refac?= =?UTF-8?q?tor=EF=BC=88=E9=87=8D=E6=9E=84=EF=BC=89:=20test(=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0=E6=B5=8B=E8=AF=95):?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 代码回溯 --- app/service/design_fast/pipeline/loading.py | 15 ++------- .../design_fast/pipeline/print_painting.py | 7 ++-- .../design_fast/pipeline/segmentation.py | 33 +++---------------- 3 files changed, 13 insertions(+), 42 deletions(-) diff --git a/app/service/design_fast/pipeline/loading.py b/app/service/design_fast/pipeline/loading.py index 85d1fb1..5a55d9d 100644 --- a/app/service/design_fast/pipeline/loading.py +++ b/app/service/design_fast/pipeline/loading.py @@ -1,6 +1,9 @@ +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 @@ -35,18 +38,6 @@ 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/print_painting.py b/app/service/design_fast/pipeline/print_painting.py index 7120e69..9e8e1dc 100644 --- a/app/service/design_fast/pipeline/print_painting.py +++ b/app/service/design_fast/pipeline/print_painting.py @@ -460,8 +460,11 @@ class PrintPainting: angle: 旋转的角度 crop: 是否需要进行裁剪,布尔向量 """ + if not isinstance(crop, bool): + raise ValueError("The 'crop' parameter must be a boolean.") + crop_image = lambda img, x0, y0, w, h: img[y0:y0 + h, x0:x0 + w] - w, h = img.shape[:2] + h, w = img.shape[:2] # 旋转角度的周期是360° angle %= 360 # 计算仿射变换矩阵 @@ -473,7 +476,7 @@ class PrintPainting: if crop: # 裁剪角度的等效周期是180° angle_crop = angle % 180 - if angle > 90: + if angle_crop > 90: angle_crop = 180 - angle_crop # 转化角度为弧度 theta = angle_crop * np.pi / 180 diff --git a/app/service/design_fast/pipeline/segmentation.py b/app/service/design_fast/pipeline/segmentation.py index 2ad1a57..0c9c51e 100644 --- a/app/service/design_fast/pipeline/segmentation.py +++ b/app/service/design_fast/pipeline/segmentation.py @@ -36,27 +36,12 @@ class Segmentation: # preview 过模型 不缓存 if "preview_submit" in result.keys() and result['preview_submit'] == "preview": # 推理获得seg 结果 - 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)) + seg_result = get_seg_result(result["image_id"], result['image']) # submit 过模型 缓存 elif "preview_submit" in result.keys() and result['preview_submit'] == "submit": # 推理获得seg 结果 - 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']) + seg_result = get_seg_result(result["image_id"], result['image']) + self.save_seg_result(seg_result, result['image_id']) # null 正常流程 加载本地缓存 无缓存则过模型 else: # 本地查询seg 缓存是否存在 @@ -64,16 +49,8 @@ class Segmentation: # 判断缓存和实际图片size是否相同 if not _ or result["image"].shape[:2] != seg_result.shape: # 推理获得seg 结果 - 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']) + seg_result = get_seg_result(result["image_id"], result['image']) + self.save_seg_result(seg_result, result['image_id']) result['seg_result'] = seg_result # 处理前片后片