人像美白的python实现
生活随笔
收集整理的這篇文章主要介紹了
人像美白的python实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
人像美白在現在的美顏功能里面幾乎屬于必備的,各家的方案都不太一致,本文主要介紹一種基于膚色分割的人像美白方案。
首先得將人像進行皮膚分割,具體最好是使用AI模型,這里就不展開了,本人側重點是美白算法,所以這里直接使用了一張皮膚分割好的mask圖。
mask圖的效果如下圖所示,白色區域為皮膚區域,黑色區域為非皮膚區域。
?python代碼如下:
import cv2 import numpy as npdef skin_whiten(img, skin_mask, whitening_degree=1.0):kernel_size = 30dilate_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (kernel_size, kernel_size))erode_kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (kernel_size, kernel_size))skin_mask = cv2.dilate(skin_mask, dilate_kernel, 1)skin_mask = cv2.erode(skin_mask, erode_kernel, 1)skin_mask = cv2.blur(skin_mask, (20, 20)) / 255.0skin_mask = cv2.resize(skin_mask, (img.shape[1], img.shape[0]))skin_mask[:, :, 0] *= 0.75skin_mask[:, :, 1] *= 0.75whiten_mask = skin_mask * 0.2 * whitening_degree + 0.5img = img / 255.0output_pred = (-2 * whiten_mask + 1) * img * img + 2 * whiten_mask * imgoutput_pred = output_pred * 255.0return output_predimg = cv2.imread("tmp/17.png") mask = cv2.imread("tmp/17_mask.jpg") res_img = skin_whiten(img=img, skin_mask=mask, whitening_degree=2.0) cv2.imwrite("tmp/17_whiten.jpg", res_img)效果圖如下:
?
我們可以看到,上圖的美白效果還是很自然,而且邏輯也非常簡單總結
以上是生活随笔為你收集整理的人像美白的python实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Kepware.KEPServer安装
- 下一篇: 清北+华五!中国最强的7所大学!北京重点