「图像处理」基于Opencv的一个美颜算法

本文是转载的,备份一下代码,方便自己查找。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# @FileName  :beauty.py
# @Time      :2020/6/29 15:37
# @Author    :Raink


import os
import cv2


def beauty_face(img):
    v1 = 3  # 磨皮程度
    v2 = 1  # 细节程度
    dx = v1 * 5  # 双边滤波参数之一 
    fc = v1 * 12.5  # 双边滤波参数之一 
    p = 0.1
    # 双边滤波
    temp1 = cv2.bilateralFilter(img, dx, fc, fc)
    temp2 = cv2.subtract(temp1, img);
    temp2 = cv2.add(temp2, (10, 10, 10, 128))
    # 高斯模糊
    temp3 = cv2.GaussianBlur(temp2, (2 * v2 - 1, 2 * v2 - 1), 0)
    temp4 = cv2.add(img, temp3)
    dst = cv2.addWeighted(img, p, temp4, 1 - p, 0.0)
    dst = cv2.add(dst, (10, 10, 10, 255))
    return dst

dir = r"E:\Images"
file_names = os.listdir(dir)
files = [os.path.join(dir, name) for name in file_names]
cv2.namedWindow("SRC", cv2.WINDOW_NORMAL)
cv2.namedWindow("DST", cv2.WINDOW_NORMAL)
for file in files:
    img = cv2.imread(file);
    dst = beauty_face(img)
    cv2.imshow("SRC", img)
    cv2.imshow("DST", dst)
    cv2.waitKey()

效果如下,总体来说还是很不错的:

「图像处理」基于Opencv的一个美颜算法_第1张图片

「图像处理」基于Opencv的一个美颜算法_第2张图片

你可能感兴趣的:(「图像处理」,Python)