OpenCV-Python实现人脸磨皮算法


Posted in Python onJune 07, 2021

人脸磨皮是最基础的人脸美颜效果。主要分为祛斑,祛痘,淡化黑眼圈等步骤。通过前面的学习相信大家一眼都看得出来我们需要干什么才能识别人脸磨皮效果。

因为磨皮之后,脸部的杂质基本上就没有了,也可以说丢失了细节。那么肯定需要用到滤波函数。滤波的过程就是把图像的每一个像素值输入过滤器,得到平滑的图像。

而我们常用的滤波有均值滤波,高斯滤波以及双边滤波三种,到底选用那种滤波呢?

首先,均值滤波会因为是用周围像素的平均值代替原像素值,肯定会导致图像过于模糊,所以排除掉。其次,高斯滤波与均值滤波原理类似,只是高斯滤波器的模板系数会随着距离模板中心的增大而减小,虽然可以减弱图像的模糊程度,但是图像边缘信息会丢失。

那么,只剩一个滤波了,也就是双边滤波器。因为它同时综合了高通滤波器和a-截尾均值过滤器的叠加效果,即可以保证图像不是非常模糊,也可以保留图像边缘信息。

而人脸磨皮原理的步骤分为如下3个步骤:

  • 图像滤波
  • 图像融合
  • 图像锐化

因为,不管上面3种滤波如何,都会导致一定的模糊(只是相对来说谁更优而已),所以需要对图像进行融合与锐化的操作。这样,可以保留一些图像的细节,以增强图像的真实感。

其中,图像融合使用的函数就是cv2.addWeighted()图像加权函数。融合的是原图与双通滤波后的图像。

最后,图像锐化使用的PIL库进行操作,使用它的ImageEnhance.Sharpness()函数自动调节图像的锐度与对比度。

实现人脸磨皮效果

既然我们已经完全掌握了人脸磨皮的原理。下面,我们来直接实现人脸的磨皮效果,具体的代码如下所示:

# 人脸磨皮
def facial_dermabrasion_effect(fileName):
    img = cv2.imread(fileName)
    blur_img = cv2.bilateralFilter(img, 31, 75, 75)
    #图像融合
    result_img = cv2.addWeighted(img, 0.3, blur_img, 0.7, 0)
    cv2.imwrite("58_1.jpg", result_img)

    image = Image.open("58_1.jpg")
    # 锐度调节
    enh_img = ImageEnhance.Sharpness(image)
    image_sharped = enh_img.enhance(1.5)
    # 对比度调节
    con_img = ImageEnhance.Contrast(image_sharped)
    image_con = con_img.enhance(1.15)
    image_con.save("58_2.jpg")

    img1 = cv2.imread("58.jpg")
    img2 = cv2.imread("58_2.jpg")
    cv2.imshow("1", img1)
    cv2.imshow("2", img2)
    cv2.waitKey()
    cv2.destroyAllWindows()


if __name__ == "__main__":
    facial_dermabrasion_effect("58.jpg")

运行之后,效果如下:

OpenCV-Python实现人脸磨皮算法

这段代码的参数都是可以调整的,并不是一层不变的,感兴趣的读者可以自己调节参数试试效果,当然人脸磨皮只是看起来皮肤光滑了。下面结合美白的效果,就可以实现相机的那种美颜。

到此这篇关于OpenCV-Python实现人脸磨皮算法的文章就介绍到这了,更多相关OpenCV 人脸磨皮内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python实现html转ubb代码(html2ubb)
Jul 03 Python
python通过wxPython打开一个音频文件并播放的方法
Mar 25 Python
Python中read()、readline()和readlines()三者间的区别和用法
Jul 30 Python
Python实现抓取HTML网页并以PDF文件形式保存的方法
May 08 Python
Python使用crontab模块设置和清除定时任务操作详解
Apr 09 Python
Python异常处理例题整理
Jul 07 Python
Python Django的安装配置教程图文详解
Jul 17 Python
python输入错误后删除的方法
Oct 12 Python
pandas 对group进行聚合的例子
Dec 27 Python
python+tifffile之tiff文件读写方式
Jan 13 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Python中对象的比较操作==和is区别详析
Feb 12 Python
Python实现拼音转换
Python实现简繁体转换
在Python中如何使用yield
Jun 07 #Python
python 爬取天气网卫星图片
Python实现天气查询软件
Python字典和列表性能之间的比较
使用pycharm运行flask应用程序的详细教程
You might like
多人战的战术与战略
2020/03/04 星际争霸
PHP函数引用返回的实例详解
2016/09/11 PHP
ThinkPHP的SAE开发相关注意事项详解
2016/10/09 PHP
PHP异常处理定义与使用方法分析
2017/07/25 PHP
php5.3/5.4/5.5/5.6/7常见新增特性汇总整理
2020/02/27 PHP
jQuery中on()方法用法实例详解
2015/02/06 Javascript
使用AOP改善javascript代码
2015/05/01 Javascript
谈谈JSON对象和字符串之间的相互转换JSON.stringify(obj)和JSON.parse(string)
2015/10/01 Javascript
jQuery+ajax简单实现文件上传的方法
2016/06/03 Javascript
总结javascript中的六种迭代器
2016/08/16 Javascript
JavaScript中boolean类型之三种情景实例代码
2016/11/21 Javascript
微信小程序 页面跳转及数据传递详解
2017/03/14 Javascript
详解Webstorm 新建.vue文件支持高亮vue语法和es6语法
2017/10/26 Javascript
详解使用webpack构建多页面应用
2017/12/21 Javascript
Vue-cli@3.0 插件系统简析
2018/09/05 Javascript
vue通过cookie获取用户登录信息的思路详解
2018/10/30 Javascript
JavaScript继承的特性与实践应用深入详解
2018/12/30 Javascript
深入浅析ng-bootstrap 组件集中 tabset 组件的实现分析
2019/07/19 Javascript
python的Crypto模块实现AES加密实例代码
2018/01/22 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python实现学员管理系统
2019/02/26 Python
python解析xml文件方式(解析、更新、写入)
2020/03/05 Python
德国健康生活方式网上商店:Landkaufhaus Mayer
2019/03/12 全球购物
美国优质宠物用品购买网站:Muttropolis
2020/02/17 全球购物
山海经纬软件测试笔试题和面试题
2013/04/02 面试题
煤矿班组长岗位职责
2013/12/29 职场文书
活动邀请函范文
2014/01/19 职场文书
九年级体育教学反思
2014/01/23 职场文书
夫妻忠诚协议范文
2014/11/16 职场文书
护士先进个人总结
2015/02/13 职场文书
先进工作者个人总结
2015/02/15 职场文书
紧急迫降观后感
2015/06/15 职场文书
2015年中秋寄语
2015/07/31 职场文书
2016优秀大学生个人事迹材料范文
2016/03/01 职场文书
mysql 带多个条件的查询方式
2021/06/05 MySQL
python开发人人对战的五子棋小游戏
2022/05/02 Python