本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個人專欄
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個人專欄
下載W3Cschool手機App,0基礎(chǔ)隨時隨地學(xué)編程>>戳此了解
導(dǎo)語
下載W3Cschool手機App,0基礎(chǔ)隨時隨地學(xué)編程>>戳此了解
利用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,就這樣吧。