OpenCV 磨皮-Python

Posted 柒月

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OpenCV 磨皮-Python相关的知识,希望对你有一定的参考价值。

--

#!/bin/python
# 祛痘美白 

import numpy as np
import cv2

def beauty_face(img):
    ‘‘‘
    Dest =(Src * (100 - Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) - Src + 128) - 256) * Opacity) /100 ;
    https://my.oschina.net/wujux/blog/1563461
    ‘‘‘

    dst = np.zeros_like(img)
    #int value1 = 3, value2 = 1; 磨皮程度与细节程度的确定
    v1 = 3
    v2 = 1
    dx = v1 * 5 # 双边滤波参数之一 
    fc = v1 * 12.5 # 双边滤波参数之一 
    p = 0.1
   
    temp4 = np.zeros_like(img)
    
    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

def beauty_face2(src):
    ‘‘‘
    Dest =(Src * (100 - Opacity) + (Src + 2 * GuassBlur(EPFFilter(Src) - Src + 128) - 256) * Opacity) /100 ;
    ‘‘‘

    dst = np.zeros_like(src)
    #int value1 = 3, value2 = 1; 磨皮程度与细节程度的确定
    v1 = 3
    v2 = 1
    dx = v1 * 5 # 双边滤波参数之一 
    fc = v1 * 12.5 # 双边滤波参数之一 
    p = 0.1
   
    temp4 = np.zeros_like(src)
    
    temp1 = cv2.bilateralFilter(src,dx,fc,fc)
    temp2 = cv2.subtract(temp1,src)
    temp2 = cv2.add(temp2, (10,10,10,128))
    temp3 = cv2.GaussianBlur(temp2,(2*v2 - 1,2*v2-1),0)
    temp4 = cv2.subtract(cv2.add(cv2.add(temp3, temp3), src), (10, 10, 10, 255))
    
    dst = cv2.addWeighted(src,p,temp4,1-p,0.0)
    dst = cv2.add(dst, (10, 10, 10,255))
    return dst


def init():
    img = cv2.imread(testimg.jpg)

    # blur1 = cv2.GaussianBlur(img, (5,5),0)
    # blur2 = cv2.bilateralFilter(img, 9 , 75, 75)
    blur3 = beauty_face(img)
    blur4 = beauty_face2(img)

    cv2.imshow(image0, img)
    # cv2.imshow(‘image1‘, blur1)
    # cv2.imshow(‘image2‘, blur2)
    cv2.imshow(image3, blur3)
    cv2.imshow(image4, blur4)

    #cv2.namedWindow(‘image‘, cv2.WINDOW_NORMAL)
    #cv2.resizeWindow(‘image‘, 1000, 1000) #定义frame的大小

    cv2.waitKey(0)
    cv2.imwrite(result1.png, blur3)
    cv2.imwrite(result2.png, blur4)
    cv2.destroyAllWindows()

if __name__ == "__main__":
    init()

实验效果图

原图(只用于算法实验侵权联系作者删除)、beauty_face 与 beauty_face2 对比如下:

 
技术图片
原图

 

 
技术图片
beauty_face
 
技术图片
beauty_face2

 

 

 

--

以上是关于OpenCV 磨皮-Python的主要内容,如果未能解决你的问题,请参考以下文章

模糊处理(下)--高斯模糊,双边模糊以及实现一个简单的磨皮美颜效果(opencv学习记录--4)

在 Python 多处理进程中运行较慢的 OpenCV 代码片段

Xcode+OpenCV-ios做一个简(nao)单(can)的磨皮App

快速学完OpenCV+python计算机视觉图像处理

机器学习手册OPENCV基础操作

手把手:使用OpenCV进行面部合成— C++ / Python