feat(新功能):

fix(修复bug):  design 选区颜色调整
docs(文档变更):
refactor(重构):
test(增加测试):
This commit is contained in:
zhouchengrong
2025-03-10 11:12:49 +08:00
parent 3655472529
commit fc982f6f04

View File

@@ -29,6 +29,24 @@ class Color:
else:
pattern = self.get_pattern(result['color'])
resize_pattern = cv2.resize(pattern, (dim_image_w, dim_image_h), interpolation=cv2.INTER_AREA)
if "partial_color" in result.keys() and result['partial_color'] != "":
bucket_name = result['partial_color'].split('/')[0]
object_name = result['partial_color'][result['partial_color'].find('/') + 1:]
partial_color = oss_get_image(oss_client=self.minio_client, bucket=bucket_name, object_name=object_name, data_type="cv2")
h, w = partial_color.shape[0:2]
resize_pattern = cv2.resize(resize_pattern, (w, h), interpolation=cv2.INTER_AREA)
# 分离出 png 图的 alpha 通道
alpha_channel = partial_color[:, :, 3]
# 提取 png 图的 RGB 通道
png_rgb = partial_color[:, :, :3]
# 创建一个与 cv 图大小相同的掩码,用于指示哪些像素需要替换
mask = alpha_channel > 0
# 将掩码扩展为 3 通道,以便与 cv 图进行逐元素操作
mask_3ch = np.stack([mask] * 3, axis=-1)
# 根据掩码将 png 图的颜色覆盖到 cv 图上
resize_pattern[mask_3ch] = png_rgb[mask_3ch]
resize_pattern = cv2.resize(resize_pattern, (dim_image_w, dim_image_h), interpolation=cv2.INTER_AREA)
closed_mo = np.expand_dims(result['mask'], axis=2).repeat(3, axis=2)
gray_mo = np.expand_dims(result['gray'], axis=2).repeat(3, axis=2)
get_image_fir = resize_pattern * (closed_mo / 255) * (gray_mo / 255)