feat(新功能):
fix(修复bug): print 于 sketch拉伸导致的print比例不正确问题 docs(文档变更): refactor(重构): test(增加测试):
This commit is contained in:
@@ -1,9 +1,6 @@
|
|||||||
import io
|
|
||||||
import logging
|
import logging
|
||||||
|
|
||||||
import cv2
|
import cv2
|
||||||
import numpy as np
|
|
||||||
from PIL import Image
|
|
||||||
|
|
||||||
from app.service.utils.new_oss_client import oss_get_image
|
from app.service.utils.new_oss_client import oss_get_image
|
||||||
|
|
||||||
@@ -38,6 +35,18 @@ class LoadImage:
|
|||||||
|
|
||||||
def __call__(self, result):
|
def __call__(self, result):
|
||||||
result['image'], result['pre_mask'] = self.read_image(result['path'])
|
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['gray'] = cv2.cvtColor(result['image'], cv2.COLOR_BGR2GRAY)
|
||||||
result['keypoint'] = self.get_keypoint(result['name'])
|
result['keypoint'] = self.get_keypoint(result['name'])
|
||||||
result['img_shape'] = result['image'].shape
|
result['img_shape'] = result['image'].shape
|
||||||
|
|||||||
@@ -36,12 +36,27 @@ class Segmentation:
|
|||||||
# preview 过模型 不缓存
|
# preview 过模型 不缓存
|
||||||
if "preview_submit" in result.keys() and result['preview_submit'] == "preview":
|
if "preview_submit" in result.keys() and result['preview_submit'] == "preview":
|
||||||
# 推理获得seg 结果
|
# 推理获得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 过模型 缓存
|
# submit 过模型 缓存
|
||||||
elif "preview_submit" in result.keys() and result['preview_submit'] == "submit":
|
elif "preview_submit" in result.keys() and result['preview_submit'] == "submit":
|
||||||
# 推理获得seg 结果
|
# 推理获得seg 结果
|
||||||
seg_result = get_seg_result(result["image_id"], result['image'])
|
seg_result = get_seg_result(result["image_id"], result['ori_image'])
|
||||||
self.save_seg_result(seg_result, result['image_id'])
|
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 正常流程 加载本地缓存 无缓存则过模型
|
# null 正常流程 加载本地缓存 无缓存则过模型
|
||||||
else:
|
else:
|
||||||
# 本地查询seg 缓存是否存在
|
# 本地查询seg 缓存是否存在
|
||||||
@@ -49,8 +64,16 @@ class Segmentation:
|
|||||||
# 判断缓存和实际图片size是否相同
|
# 判断缓存和实际图片size是否相同
|
||||||
if not _ or result["image"].shape[:2] != seg_result.shape:
|
if not _ or result["image"].shape[:2] != seg_result.shape:
|
||||||
# 推理获得seg 结果
|
# 推理获得seg 结果
|
||||||
seg_result = get_seg_result(result["image_id"], result['image'])
|
seg_result = get_seg_result(result["image_id"], result['ori_image'])
|
||||||
self.save_seg_result(seg_result, result['image_id'])
|
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
|
result['seg_result'] = seg_result
|
||||||
|
|
||||||
# 处理前片后片
|
# 处理前片后片
|
||||||
|
|||||||
@@ -21,11 +21,11 @@ class Split(object):
|
|||||||
def __call__(self, result):
|
def __call__(self, result):
|
||||||
try:
|
try:
|
||||||
|
|
||||||
if result['name'] in ('outwear', 'dress', 'blouse', 'skirt', 'trousers', 'tops', 'bottoms','accessories'):
|
if result['name'] in ('outwear', 'dress', 'blouse', 'skirt', 'trousers', 'tops', 'bottoms', 'accessories'):
|
||||||
front_mask = result['front_mask']
|
front_mask = result['front_mask']
|
||||||
back_mask = result['back_mask']
|
back_mask = result['back_mask']
|
||||||
rgba_image = rgb_to_rgba(result['final_image'], front_mask + back_mask)
|
rgba_image = rgb_to_rgba(result['final_image'], front_mask + back_mask)
|
||||||
new_size = (int(rgba_image.shape[1] * result["scale"] * result["resize_scale"][0]), int(rgba_image.shape[0] * result["scale"] * result["resize_scale"][1]))
|
new_size = (int(rgba_image.shape[1] * result["scale"]), int(rgba_image.shape[0] * result["scale"]))
|
||||||
rgba_image = cv2.resize(rgba_image, new_size)
|
rgba_image = cv2.resize(rgba_image, new_size)
|
||||||
result_front_image = np.zeros_like(rgba_image)
|
result_front_image = np.zeros_like(rgba_image)
|
||||||
front_mask = cv2.resize(front_mask, new_size)
|
front_mask = cv2.resize(front_mask, new_size)
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ if __name__ == '__main__':
|
|||||||
# url = "aida-users/89/sketchboard/female/Dress/e6724ab7-8d3f-4677-abe0-c3e42ab7af85.jpeg"
|
# url = "aida-users/89/sketchboard/female/Dress/e6724ab7-8d3f-4677-abe0-c3e42ab7af85.jpeg"
|
||||||
# url = "aida-users/87/print/956614a2-7e75-4fbe-9ed0-c1831e37a2c9-4-87.png"
|
# url = "aida-users/87/print/956614a2-7e75-4fbe-9ed0-c1831e37a2c9-4-87.png"
|
||||||
# url = "aida-users/89/single_logo/123-89.png"
|
# url = "aida-users/89/single_logo/123-89.png"
|
||||||
url = "aida-users/89/123-89.png"
|
url = "aida-results/result_40e527bf-e46d-11ef-813d-0826ae3ad6b3.png"
|
||||||
|
|
||||||
# url = "aida-collection-element/12148/Sketchboard/95ea577b-305b-4a62-b30a-39c0dd3ddb3f.png"
|
# url = "aida-collection-element/12148/Sketchboard/95ea577b-305b-4a62-b30a-39c0dd3ddb3f.png"
|
||||||
read_type = "2"
|
read_type = "2"
|
||||||
|
|||||||
Reference in New Issue
Block a user