OpenCV-Python實(shí)現(xiàn)人臉磨皮算法
人臉磨皮是最基礎(chǔ)的人臉美顏效果。主要分為祛斑,祛痘,淡化黑眼圈等步驟。通過(guò)前面的學(xué)習(xí)相信大家一眼都看得出來(lái)我們需要干什么才能識(shí)別人臉磨皮效果。
因?yàn)槟テぶ螅槻康碾s質(zhì)基本上就沒(méi)有了,也可以說(shuō)丟失了細(xì)節(jié)。那么肯定需要用到濾波函數(shù)。濾波的過(guò)程就是把圖像的每一個(gè)像素值輸入過(guò)濾器,得到平滑的圖像。
而我們常用的濾波有均值濾波,高斯濾波以及雙邊濾波三種,到底選用那種濾波呢?
首先,均值濾波會(huì)因?yàn)槭怯弥車(chē)袼氐钠骄荡嬖袼刂?,肯定?huì)導(dǎo)致圖像過(guò)于模糊,所以排除掉。其次,高斯濾波與均值濾波原理類(lèi)似,只是高斯濾波器的模板系數(shù)會(huì)隨著距離模板中心的增大而減小,雖然可以減弱圖像的模糊程度,但是圖像邊緣信息會(huì)丟失。
那么,只剩一個(gè)濾波了,也就是雙邊濾波器。因?yàn)樗瑫r(shí)綜合了高通濾波器和a-截尾均值過(guò)濾器的疊加效果,即可以保證圖像不是非常模糊,也可以保留圖像邊緣信息。
而人臉磨皮原理的步驟分為如下3個(gè)步驟:
- 圖像濾波
- 圖像融合
- 圖像銳化
因?yàn)?,不管上?種濾波如何,都會(huì)導(dǎo)致一定的模糊(只是相對(duì)來(lái)說(shuō)誰(shuí)更優(yōu)而已),所以需要對(duì)圖像進(jìn)行融合與銳化的操作。這樣,可以保留一些圖像的細(xì)節(jié),以增強(qiáng)圖像的真實(shí)感。
其中,圖像融合使用的函數(shù)就是cv2.addWeighted()圖像加權(quán)函數(shù)。融合的是原圖與雙通濾波后的圖像。
最后,圖像銳化使用的PIL庫(kù)進(jìn)行操作,使用它的ImageEnhance.Sharpness()函數(shù)自動(dòng)調(diào)節(jié)圖像的銳度與對(duì)比度。
實(shí)現(xiàn)人臉磨皮效果
既然我們已經(jīng)完全掌握了人臉磨皮的原理。下面,我們來(lái)直接實(shí)現(xiàn)人臉的磨皮效果,具體的代碼如下所示:
# 人臉磨皮 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") # 銳度調(diào)節(jié) enh_img = ImageEnhance.Sharpness(image) image_sharped = enh_img.enhance(1.5) # 對(duì)比度調(diào)節(jié) 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")
運(yùn)行之后,效果如下:
這段代碼的參數(shù)都是可以調(diào)整的,并不是一層不變的,感興趣的讀者可以自己調(diào)節(jié)參數(shù)試試效果,當(dāng)然人臉磨皮只是看起來(lái)皮膚光滑了。下面結(jié)合美白的效果,就可以實(shí)現(xiàn)相機(jī)的那種美顏。
到此這篇關(guān)于OpenCV-Python實(shí)現(xiàn)人臉磨皮算法的文章就介紹到這了,更多相關(guān)OpenCV 人臉磨皮內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python生成器,可迭代對(duì)象,迭代器區(qū)別和聯(lián)系
這篇文章主要介紹了python生成器,可迭代對(duì)象,迭代器區(qū)別和聯(lián)系,通過(guò)對(duì)比用法讓大家更加深入理解相關(guān)知識(shí),需要的朋友參考學(xué)習(xí)下吧。2018-02-02使用python實(shí)現(xiàn)遞歸版漢諾塔示例(漢諾塔遞歸算法)
這篇文章主要介紹了使用python實(shí)現(xiàn)遞歸版漢諾塔示例(漢諾塔遞歸算法),需要的朋友可以參考下2014-04-04wxpython中Textctrl回車(chē)事件無(wú)效的解決方法
這篇文章主要介紹了wxpython中Textctrl回車(chē)事件無(wú)效的解決方法,較為詳細(xì)的分析了TextCtrl支持的事件類(lèi)型,并給出了TextCtrl綁定回車(chē)事件的相應(yīng)實(shí)現(xiàn)技巧,需要的朋友可以參考下2016-07-07windows7 32、64位下python爬蟲(chóng)框架scrapy環(huán)境的搭建方法
這篇文章主要介紹了windows7 32、64位下python爬蟲(chóng)框架scrapy環(huán)境的搭建方法,需要的朋友可以參考下2018-11-11解決Pycharm 中遇到Unresolved reference ''sklearn''的問(wèn)題
這篇文章主要介紹了解決Pycharm 中遇到Unresolved reference 'sklearn'的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-07-07