主要参考了《使用OPENCV简单实现具有肤质保留功能的磨皮增白算法》这篇文章,我使用了python实现,最主要的是直接按原文公式算的话,我这里一直有个问题就是原图中纯色的地方处理后会出现色彩斑点而且非常严重,不知道原作者是否有这个情况,所以我又做了略微改动,修复了这个bug。
======================== 一切不给定妆照的都是耍流氓 ========================
代码很简单:
import cv2def skin_white(img):value1 = 3value2 = 1opacity = 0.1dx = value1 * 5fc = value1 * 12.5temp_img = cv2.bilateralFilter(img, dx, fc, fc)temp_img = temp_img - img + 128temp_img = cv2.GaussianBlur(temp_img, (2 * value2 - 1, 2 * value2 - 1), 0)temp_img = img + temp_img - 128dst = cv2.addWeighted(img, opacity, temp_img, (1 - opacity), 0)return dstimg = cv2.imread('1.jpg')dst = skin_white(img)cv2.imwrite('1_face.jpg',dst)