TheEeeeLin's picture
update
f8cafb8
raw
history blame
1.63 kB
import cv2
from hivision.creator.context import Context
from hivision.plugin.beauty.whitening import make_whitening
from hivision.plugin.beauty.base_adjust import (
adjust_brightness_contrast_sharpen_saturation,
)
def beauty_face(ctx: Context):
"""
对人脸进行美颜处理
1. 美白
2. 亮度
:param ctx: Context对象,包含处理参数和图像
"""
middle_image = ctx.origin_image.copy()
processed = False
# 如果美白强度大于0,进行美白处理
if ctx.params.whitening_strength > 0:
middle_image = make_whitening(middle_image, ctx.params.whitening_strength)
processed = True
# 如果亮度、对比度、锐化强度不为0,进行亮度、对比度、锐化处理
if (
ctx.params.brightness_strength != 0
or ctx.params.contrast_strength != 0
or ctx.params.sharpen_strength != 0
or ctx.params.saturation_strength != 0
):
middle_image = adjust_brightness_contrast_sharpen_saturation(
middle_image,
ctx.params.brightness_strength,
ctx.params.contrast_strength,
ctx.params.sharpen_strength,
ctx.params.saturation_strength,
)
processed = True
# 如果进行了美颜处理,更新matting_image
if processed:
# 分离中间图像的BGR通道
b, g, r = cv2.split(middle_image)
# 从原始matting_image中获取alpha通道
_, _, _, alpha = cv2.split(ctx.matting_image)
# 合并处理后的BGR通道和原始alpha通道
ctx.matting_image = cv2.merge((b, g, r, alpha))