本文实现两种美白效果:
- 修改后的亮度增强法
- 双边滤波法
import cv2
import numpy as np
img = cv2.imread('2.jpg', 1)
cv2.imshow('src', img)
imgInfo = img.shape
height = imgInfo[0]
width = imgInfo[1]
# 1) 修改亮度增强实现磨皮美白
dst = np.zeros((height, width, 3), np.uint8)
for i in range(0, height):
for j in range(0, width):
(b, g, r) = img[i, j]
# 两个通道比例放大
bb = int(b) * 1.3 + 10
gg = int(g) * 1.2 + 15
# 阈值判断
if bb > 255:
bb = 255
if gg > 255:
gg = 255
# 像素封装
dst[i, j] = (bb, gg, r)
# 2) 双边滤波实现的磨皮美白:滤出噪声 + 保存细节
# 参数:图片 d sigmaColor sigmaSpace
# 参数解释:
# d: 过滤时使用的各像素邻域的直径
# sigmaColor: 色彩空间的sigma, 较大时各像素邻域内相距较远的颜色会被混到一起,形成更大范围内的半相等颜色
# sigmaSpace: 坐标空间的sigma, 较大时只要颜色相近,较远的像素会相互影响
dst = cv2.bilateralFilter(img, 15, 35, 35)
cv2.imshow('dst proportianally larger', dst)
cv2.imshow('dst2 bilateralFilter', dst)
cv2.waitKey(0)
两种美白效果如下:
image.png
网友评论