本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
本文轉(zhuǎn)載至知乎ID:Charles(白露未晞)知乎個(gè)人專欄
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
導(dǎo)語(yǔ)
下載W3Cschool手機(jī)App,0基礎(chǔ)隨時(shí)隨地學(xué)編程>>戳此了解
利用Python實(shí)現(xiàn)美顏。。。
這是之前在GitHub上下載的一個(gè)項(xiàng)目。。。
似乎有些日子了。。。
所以暫時(shí)找不到原項(xiàng)目的鏈接了。。。
今天抽空看了下它源代碼的主要思想,似乎挺簡(jiǎn)單的。。。
于是決定用Python3自己復(fù)現(xiàn)一下。。。
T_T感覺(jué)還是挺有趣的。。。
Just have a try!
相關(guān)文件
文件下載鏈接: https://pan.baidu.com/s/18-mGsw0VeQxaQJ7Ljiqowg
密碼: 6rd8
開(kāi)發(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安裝,否則容易出錯(cuò)。相關(guān)文件中提供了編譯好的python3.5版本的whl文件,供非anaconda3使用者安裝使用。
主要思路
聲明:
主要思路是根據(jù)項(xiàng)目源代碼推測(cè)的,不算是我的思路,希望我沒(méi)有猜錯(cuò)。
特征提?。?/span>
利用dlib庫(kù)提取面部特征,面部特征點(diǎn)包括:
下巴、嘴、鼻子、左右眼、左右耳等部分。
針對(duì)人臉的不同部分進(jìn)行具體的美化操作。
另外,由于dlib庫(kù)無(wú)法提取額頭邊界坐標(biāo),而額頭的美顏也十分重要。。。
因此假設(shè)額頭在眉心附近,并通過(guò)相應(yīng)的參數(shù)做出一個(gè)橢圓作為額頭的粗略估計(jì)。
實(shí)際操作過(guò)程中需要將與五官重合部分剔除,并只保留與鼻子膚色相同的部分。
美化方法:
就是很平常的美白、增加鮮艷度、磨皮和銳化操作。
美白和增加鮮艷度在HSV空間實(shí)現(xiàn);
磨皮用了高斯濾波器和雙邊濾波器;
銳化用的是卷積銳化算法。
具體實(shí)現(xiàn)過(guò)程詳見(jiàn)源代碼。
使用演示
說(shuō)明:
根據(jù)自己的需求調(diào)用相應(yīng)的美化方法實(shí)現(xiàn)美顏。
默認(rèn)參數(shù)僅供參考,以實(shí)際效果為準(zhǔn),可以自己調(diào)整一些參數(shù)讓效果看起來(lái)更棒。
使用方式:
在cmd窗口運(yùn)行Beauty.py文件即可。
待處理照片路徑在源代碼232行,請(qǐng)自行修改。
演示1:
失敗2:
失敗3:
T_T好吧效果比較一般。。。
更多
總體來(lái)說(shuō)。。。效果比較一般。。。
同時(shí)我發(fā)現(xiàn)有些頭型并不適合用這個(gè)算法美顏。。。比如我試了馬云的照片。。。結(jié)果很不OK。。。
而且參數(shù)似乎不太好調(diào)。。。
做成Demo的話或許會(huì)好調(diào)很多。。。
有興趣的朋友可以試試去做個(gè)美圖秀秀高度不仿版。
T_T,就這樣吧。