Python:变身超级赛亚人
Python:變身超級賽亞人
- 思路
- 金色頭發(fā)
- 添加頭發(fā)
- 電弧特效
- 代碼下載
上周六搞了個修煉寫輪眼,利用python代碼定位眼球再貼圖,有點太粗糙。今兒又周末,效果升級下,玩?zhèn)€變身超級賽亞人——
預(yù)期是動態(tài)顯示變身后的金色頭發(fā)、光芒和周圍附帶的電弧,以下是最終效果:
展示視頻鏈接:https://v.qq.com/x/page/f1359rshz00.html
視頻中可以看到,金色頭發(fā)可以根據(jù)面部大小進(jìn)行自動調(diào)整,“光芒”在頭發(fā)外圍弱弱展現(xiàn),電弧也算是動態(tài)變換,勉強(qiáng)達(dá)成目標(biāo)
思路
在Python代碼中通過opencv啟用攝像頭拍攝,對獲取到的圖像通過dlib模塊進(jìn)行面部識別,之后利用PIL模塊進(jìn)行圖像處理,添加金色賽亞人頭發(fā)。因為攝像頭一直處于獲取圖像的while循環(huán)中,通過對不同圖片中添加不同形態(tài)的電弧圖像,形成最終視頻中動態(tài)電弧效果。
金色頭發(fā)
說到這個頭發(fā),對某度我真是無語,最終不得不英文搜到了目標(biāo):
OK,搞定,我選擇的是第五個圖片,下載后是白底jpg格式,先利用Photoshop將其改為背景透明的png格式:
為了加發(fā)光特效,我是選用的Win10自帶的畫圖3D軟件,其中的噴霧罐效果,在頭發(fā)外圍加了一圈黃色噴霧:
添加頭發(fā)
至于面部識別,我們還是選用前幾篇反復(fù)提到的dlib模塊。
dlib是一個包含機(jī)器學(xué)習(xí)算法的開源工具包。目前Dlib已經(jīng)被廣泛的用在行業(yè)和學(xué)術(shù)領(lǐng)域,包括機(jī)器人,嵌入式設(shè)備,移動電話和大型高性能計算環(huán)境。
我們先將頭發(fā)縮放添加到dlib的面部模式中:
調(diào)整位置,并根據(jù)面部識別到的臉部尺寸對頭發(fā)圖片大小進(jìn)行調(diào)整,計算頭發(fā)在攝像頭圖像中的添加位置。
做完頭發(fā)效果如圖:
電弧特效
因為這是通過攝像頭一直在抓取圖像,那么只要這一刻和下一刻處理后的電弧圖像不一致,就會產(chǎn)生動態(tài)電弧的效果。所以實現(xiàn)方式就是準(zhǔn)備些背景透明的電弧圖片,在代碼中隨機(jī)選取進(jìn)行縮放后添加到圖像中。
針對不同的位置,我將電弧分為三組(其實是通過同一組旋轉(zhuǎn)變換Ps成三組的),l1-l4是放在左側(cè)的,r1-r4是右側(cè),t1-t4是頂部位置的。對抓取到的頭像,隨機(jī)添加電弧圖片:
最終效果截圖:
下一時刻:
可以對比,電弧實現(xiàn)了不同形態(tài)的變換展示~
代碼下載
超級賽亞人代碼及素材
網(wǎng)盤下載鏈接:https://pan.baidu.com/s/1wV6SbnYEwpRaw6rkoWLA0Q
提取碼:4zzp
Github代碼下載鏈接: https://github.com/pengfexue2/supersaiyan.git
若通過GitHub下載代碼,需要通過README.md中的鏈接下載面部識別要用到的dat文件
代碼已添加詳細(xì)注釋。
最后,歡迎關(guān)注我記錄學(xué)習(xí) Python、前端以及微信小程序開發(fā)的公眾號哈~
總結(jié)
以上是生活随笔為你收集整理的Python:变身超级赛亚人的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Linux- 系统随你玩之--文本、字符
- 下一篇: 如何利用python调用API接口获取数