实现人脸磨皮算法---OpenCV-Python开发指南(58)
目录
- 人脸磨皮原理
- 实现人脸磨皮效果
人脸磨皮原理
人脸磨皮是最基础的人脸美颜效果。主要分为祛斑,祛痘,淡化黑眼圈等步骤。通过前面的学习相信大家一眼都看得出来我们需要干什么才能识别人脸磨皮效果。
因为磨皮之后,脸部的杂质基本上就没有了,也可以说丢失了细节。那么肯定需要用到滤波函数。滤波的过程就是把图像的每一个像素值输入过滤器,得到平滑的图像。
而我们常用的滤波有均值滤波,高斯滤波以及双边滤波三种,到底选用那种滤波呢?
首先,均值滤波会因为是用周围像素的平均值代替原像素值,肯定会导致图像过于模糊,所以排除掉。其次,高斯滤波与均值滤波原理类似,只是高斯滤波器的模板系数会随着距离模板中心的增大而减小,虽然可以减弱图像的模糊程度,但是图像边缘信息会丢失。
那么,只剩一个滤波了,也就是双边滤波器。因为它同时综合了高通滤波器和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开发指南(58)相关推荐
- 双边滤波的人脸磨皮算法(宋茜)
本文将介绍双边滤波的原理以及在人脸磨皮中的应用. 文章目录 双边滤波原理 人脸磨皮算法 双边滤波原理 双边滤波器是保边滤波器中广为人知的一种.保边滤波器指在滤波过程中能够有效的保留图片中的边缘信息的一 ...
- Python开发指南[1]之程序员计时小时钟(附源码)
Python开发指南[1]之程序员计时小时钟 程序之美 前言 主体 运行效果 核心代码 逻辑分析 结束语 程序之美 前言 Python作为一门编程语言,这门语言的魅力和影响力已经远超C#.C++等编程 ...
- python没有联网_无网环境下的 Python 开发指南
说起有关 Python 的指南,便一定得提到 K 神创建的『Python最佳实践指南』,英文名字是『The Hitchhiker's Guide to Python!』.毫不夸张地说,K 神创建的指南 ...
- 太赞了!Win 平台最佳Python 开发指南!
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径 干货:爬取豆瓣短评,电影<后来的我们> | 38年NBA最佳球员分 ...
- 零基础用一百行代码完成动态的人脸识别(opencv+python)
废话:(其实是介绍了一下该文章的大概来路) 电子化的时代到处都能看到人脸识别的用途:比如:刷脸门禁,火车站检票口,又比如检查站,还有一些比较高端的汽车还支持刷脸开门等等. 近期呢接了个学校的一个项 ...
- c语言中人脸磨皮算法,美颜算法中磨皮的原理
谈到磨皮美颜,大家可能认为是一个很高深难懂的事情,网上搜索关于美颜的文章,一般都是搬出许多算法,看得让你头晕目眩的.今天将用大白话来让你快速认识磨皮美颜原理,轻松get到她的点!只要你耐着性子读完本篇 ...
- 【转】Python开发指南:最佳实践精选
总体原则 价值 "为别人开发你也想要使用的工具." --Kenneth Reitz "简洁总是胜过可用." --Pieter Hintjens "满足 ...
- 毕业设计 深度学习 机器视觉 人脸识别系统 - opencv python
文章目录 0 前言 1 机器学习-人脸识别过程 人脸检测 人脸对其 人脸特征向量化 人脸识别 2 深度学习-人脸识别过程 人脸检测 人脸识别 Metric Larning 3 最后 0 前言
- 微软400集python课程-最强福利——来自微软的Python学习教程(开发指南)
各位小伙伴们,大家有多久没有发现柳猫这么勤奋的更新啦~ 今天给小伙伴们带来微软的官方福利,你没看错,就是来自微软的官方Python学习教程(开发指南)~ 之前微软上线过一套 Python 教程< ...
最新文章
- Python Excel 操作 | xlrd+xlwt 模块笔记
- RepeatMasker安装和使用——基因组重复序列注释
- 捅破窗户纸:如何从过程到对象—For金色的海洋以及所有为面向对象而困惑的Tx...
- 准备搭建经营分析前端试验型平台
- TimeSpan 时间间隔
- (一)Spring MVC简介
- 接口测试学习之json
- C语言九九乘法表(五种输出形式)
- ISO/IEC27000系列标准研究
- 迷你迅雷(官方版)不含广告,不用会员,多线程急速
- Auto CAD 2022安装教程【64位】
- 背包问题(Knapsack Problem) ----- 蛮力法
- Havok和Physx对比
- linux 流量 脚本,实时查看linux网卡流量脚本
- TC3XX 多核ECU的中断向量表解疑
- 计算机专业班级工作计划,网络计算机班班主任工作计划
- 增加tensor维度 torch
- C# treeView展示目录树
- # 新手学习python语法基础知识第十二天
- 《网络营销推广技术、技巧深度解密》文档