程序員教你用python替代繁瑣復(fù)雜的ps步驟實(shí)現(xiàn)圖片合成換臉

具體過(guò)程分為以下四步

面部標(biāo)志提取

dlib提供了實(shí)現(xiàn)面部特征提取的接口:

get_landmarks

用于檢測(cè)面部

關(guān)鍵特征點(diǎn)的坐標(biāo)

普式分析法(Procrustes Analysis)計(jì)算人臉對(duì)齊映射矩陣

仿射變換

向量的平移

放縮及旋轉(zhuǎn)變換

圖像的平移

放縮及旋轉(zhuǎn)都是

原始圖像的坐標(biāo)進(jìn)行計(jì)算。

怎么找到映射矩陣M

便是普式分析法


輸出是矩陣M

transformation_from_points()

利用opencv及計(jì)算得到的映射矩陣對(duì)圖像進(jìn)行映射

接受三個(gè)參數(shù)

需要變換的原始圖像

映射矩陣M 以及變換的圖像大小

4 顏色(膚色、光線)校正

這里使用了顏色平衡

但不是直接使用全圖的常數(shù)比例因子

而是采用每個(gè)像素的局部比例因子

mask提取

蒙版會(huì)畫出兩個(gè)白色的凸多邊形

幫助消除剩下的不連續(xù)部分

最后的圖像疊加

combined_mask

相加

從為得到最后的換臉結(jié)果圖

好了,下面來(lái)看案例實(shí)戰(zhàn)操作

程序思路

用 decect 接口

獲取人臉關(guān)鍵點(diǎn)

return_landmark 參數(shù)

不能為 0 不然不會(huì)返回人臉關(guān)鍵點(diǎn)

用 mergeface 接口,合成臉部圖像

注意圖片文件大小不超過(guò) 2 MB

示例運(yùn)行代碼

封裝一個(gè)多張照片的合成函數(shù)

注意邊界特殊情況

圖片1:

圖片2:

效果:

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 朋友托我畫的生肖組合,實(shí)在不會(huì)畫狗狗~ 讓畫面盡量保持干凈! 粗糙的筆法(囧) 實(shí)在不會(huì)畫眼睛~ 實(shí)在不會(huì)畫狗狗,...
    機(jī)器貓的魚豆腐閱讀 350評(píng)論 0 2
  • 就像當(dāng)你出門時(shí)大雨滂沱, 知道打傘在街上走三分鐘也會(huì)渾身濕透, 就轉(zhuǎn)身走進(jìn)附近茶餐廳坐下, 喝一杯咖啡,抽一根煙,...
    浮語(yǔ)泛花閱讀 1,107評(píng)論 0 0

友情鏈接更多精彩內(nèi)容