学会利用Python实现“美颜”功能
本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
本文转载至知乎ID:Charles(白露未晞)知乎个人专栏
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解
导语
下载W3Cschool手机App,0基础随时随地学编程>>戳此了解
利用Python实现美颜。。。
这是之前在GitHub上下载的一个项目。。。
似乎有些日子了。。。
所以暂时找不到原项目的链接了。。。
今天抽空看了下它源代码的主要思想,似乎挺简单的。。。
于是决定用Python3自己复现一下。。。
T_T感觉还是挺有趣的。。。
Just have a try!
相关文件
文件下载链接: https://pan.baidu.com/s/18-mGsw0VeQxaQJ7Ljiqowg
密码: 6rd8
开发工具
Python版本:3.5.4
相关模块:
numpy模块;
cv2模块;
dlib模块。
环境搭建
安装Python并添加到环境变量,pip安装需要的相关模块即可。
注1:
cv2即opencv-python模块。
注2:
dlib模块在anaconda3下可以直接pip安装,否则容易出错。相关文件中提供了编译好的python3.5版本的whl文件,供非anaconda3使用者安装使用。
主要思路
声明:
主要思路是根据项目源代码推测的,不算是我的思路,希望我没有猜错。
特征提取:
利用dlib库提取面部特征,面部特征点包括:
下巴、嘴、鼻子、左右眼、左右耳等部分。
针对人脸的不同部分进行具体的美化操作。
另外,由于dlib库无法提取额头边界坐标,而额头的美颜也十分重要。。。
因此假设额头在眉心附近,并通过相应的参数做出一个椭圆作为额头的粗略估计。
实际操作过程中需要将与五官重合部分剔除,并只保留与鼻子肤色相同的部分。
美化方法:
就是很平常的美白、增加鲜艳度、磨皮和锐化操作。
美白和增加鲜艳度在HSV空间实现;
磨皮用了高斯滤波器和双边滤波器;
锐化用的是卷积锐化算法。
具体实现过程详见源代码。
使用演示
说明:
根据自己的需求调用相应的美化方法实现美颜。
默认参数仅供参考,以实际效果为准,可以自己调整一些参数让效果看起来更棒。
使用方式:
在cmd窗口运行Beauty.py文件即可。
待处理照片路径在源代码232行,请自行修改。
演示1:
失败2:
失败3:
T_T好吧效果比较一般。。。
更多
总体来说。。。效果比较一般。。。
同时我发现有些头型并不适合用这个算法美颜。。。比如我试了马云的照片。。。结果很不OK。。。
而且参数似乎不太好调。。。
做成Demo的话或许会好调很多。。。
有兴趣的朋友可以试试去做个美图秀秀高度不仿版。
T_T,就这样吧。