App下載

學(xué)會利用Python實現(xiàn)“美顏”功能

猿友 2018-07-27 10:45:34 瀏覽數(shù) (11327)
反饋

本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個人專欄

下載W3Cschool手機App,0基礎(chǔ)隨時隨地學(xué)編程>>戳此了解

導(dǎo)語

利用Python實現(xiàn)美顏。。。

這是之前在GitHub上下載的一個項目。。。

似乎有些日子了。。。

所以暫時找不到原項目的鏈接了。。。

今天抽空看了下它源代碼的主要思想,似乎挺簡單的。。。

于是決定用Python3自己復(fù)現(xiàn)一下。。。

T_T感覺還是挺有趣的。。。

Just have a try!


相關(guān)文件

文件下載鏈接: https://pan.baidu.com/s/18-mGsw0VeQxaQJ7Ljiqowg

密碼: 6rd8


開發(fā)工具

Python版本:3.5.4

相關(guān)模塊:

numpy模塊;

cv2模塊;

dlib模塊。

環(huán)境搭建

安裝Python并添加到環(huán)境變量,pip安裝需要的相關(guān)模塊即可。

注1:

cv2即opencv-python模塊。

注2:

dlib模塊在anaconda3下可以直接pip安裝,否則容易出錯。相關(guān)文件中提供了編譯好的python3.5版本的whl文件,供非anaconda3使用者安裝使用。


主要思路

聲明:

主要思路是根據(jù)項目源代碼推測的,不算是我的思路,希望我沒有猜錯。

特征提取:

利用dlib庫提取面部特征,面部特征點包括:

下巴、嘴、鼻子、左右眼、左右耳等部分。

針對人臉的不同部分進(jìn)行具體的美化操作。

另外,由于dlib庫無法提取額頭邊界坐標(biāo),而額頭的美顏也十分重要。。。

因此假設(shè)額頭在眉心附近,并通過相應(yīng)的參數(shù)做出一個橢圓作為額頭的粗略估計。

實際操作過程中需要將與五官重合部分剔除,并只保留與鼻子膚色相同的部分。

美化方法:

就是很平常的美白、增加鮮艷度、磨皮和銳化操作。

美白和增加鮮艷度在HSV空間實現(xiàn);

磨皮用了高斯濾波器和雙邊濾波器;

銳化用的是卷積銳化算法。

具體實現(xiàn)過程詳見源代碼。


使用演示

說明:

根據(jù)自己的需求調(diào)用相應(yīng)的美化方法實現(xiàn)美顏。

默認(rèn)參數(shù)僅供參考,以實際效果為準(zhǔn),可以自己調(diào)整一些參數(shù)讓效果看起來更棒。

使用方式:

在cmd窗口運行Beauty.py文件即可。

待處理照片路徑在源代碼232行,請自行修改。

演示1:

失敗2:

失敗3:

T_T好吧效果比較一般。。。


更多

總體來說。。。效果比較一般。。。

同時我發(fā)現(xiàn)有些頭型并不適合用這個算法美顏。。。比如我試了馬云的照片。。。結(jié)果很不OK。。。

而且參數(shù)似乎不太好調(diào)。。。

做成Demo的話或許會好調(diào)很多。。。

有興趣的朋友可以試試去做個美圖秀秀高度不仿版。

T_T,就這樣吧。

1 人點贊