💻 源代码
import cv2
import numpy as np
def skin_detect(img):
"""肤色检测"""
# YCrCb颜色空间
ycrcb = cv2.cvtColor(img, cv2.COLOR_BGR2YCrCb)
# 肤色范围
lower = np.array([0, 133, 77])
upper = np.array([255, 173, 127])
mask = cv2.inRange(ycrcb, lower, upper)
return mask
def whitening(image, level=1.0):
"""美白处理"""
# 转换为YCrCb
ycrcb = cv2.cvtColor(image, cv2.COLOR_BGR2YCrCb)
# 提亮Y通道
ycrcb[:, :, 0] = cv2.add(ycrcb[:, :, 0], int(30 * level))
# 转换回BGR
result = cv2.cvtColor(ycrcb, cv2.COLOR_YCrCb2BGR)
return result
def smooth_skin(image, kernel_size=5):
"""磨皮处理"""
# 双边滤波保边平滑
result = cv2.bilateralFilter(image, kernel_size, 50, 50)
return result
def beautify(image, whitening_level=1.0, smooth_level=5):
"""一键美颜"""
# 磨皮
smoothed = smooth_skin(image, smooth_level)
# 美白
result = whitening(smoothed, whitening_level)
return result
# 示例
img = cv2.imread('face.jpg')
result = beautify(img, 1.2, 7)
cv2.imwrite('beauty_result.jpg', result)