使用Python給頭像加上圣誕帽或圣誕老人小圖標(biāo)附源碼
隨著圣誕的到來,想給給自己的頭像加上一頂圣誕帽。如果不是頭像,就加一個圣誕老人陪伴。
用Python給頭像加上圣誕帽,看了下大概也都是來自2017年大神的文章:https://zhuanlan.zhihu.com/p/32283641
主要流程
素材準(zhǔn)備
人臉檢測與人臉關(guān)鍵點(diǎn)檢測
調(diào)整大小,添加帽子
用dlib的正臉檢測器進(jìn)行人臉檢測,用dlib提供的模型提取人臉的五個關(guān)鍵點(diǎn)
調(diào)整帽子大小,帶帽
選取兩個眼角的點(diǎn),求中心作為放置帽子的x方向的參考坐標(biāo),y方向的坐標(biāo)用人臉框上線的y坐標(biāo)表示。然后我們根據(jù)人臉檢測得到的人臉的大小調(diào)整帽子的大小,使得帽子大小合適。
# 選取左右眼眼角的點(diǎn) point1 = shape.part(0) point2 = shape.part(2) # 求兩點(diǎn)中心 eyes_center = ((point1.x+point2.x)//2,(point1.y+point2.y)//2) # cv2.circle(img,eyes_center,3,color=(0,255,0)) # cv2.imshow("image",img) # cv2.waitKey() # 根據(jù)人臉大小調(diào)整帽子大小 factor = 1.5 resized_hat_h = int(round(rgb_hat.shape[0]*w/rgb_hat.shape[1]*factor)) resized_hat_w = int(round(rgb_hat.shape[1]*w/rgb_hat.shape[1]*factor)) if resized_hat_h > y: resized_hat_h = y-1 # 根據(jù)人臉大小調(diào)整帽子大小 resized_hat = cv2.resize(rgb_hat,(resized_hat_w,resized_hat_h))
添加小圖標(biāo)
當(dāng)然有些同學(xué)的頭像不是人物或不能準(zhǔn)確的識別無關(guān),所有添加了標(biāo)識。(即在右下添加小圖標(biāo))。
小圖標(biāo)避免單調(diào),是從圖標(biāo)中隨機(jī)選擇一個:
代碼如下:
# 水印圖片 num = random.randint(1, 5) logo = Image.open("img_icon/santa_" + str(num) + ".png") img = Image.open(imgPath) print(img.size, logo.size) # 圖層 layer = Image.new("RGBA", img.size, (255, 255, 255, 0)) layer.paste(logo, (img.size[0] - logo.size[0], img.size[1]-logo.size[1])) # 覆蓋 img_after = Image.composite(layer, img, layer) # img_after.show() img_after.save(outImgePath)
結(jié)果如下
源代碼:https://github.com/silencesmile/Christmas_Hat
總結(jié)
以上所述是小編給大家介紹的使用Python給頭像加上圣誕帽或圣誕老人小圖標(biāo)附源碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
Django實(shí)現(xiàn)WebSocket在線聊天室功能(channels庫)
本文基于channels庫Django實(shí)現(xiàn)WebSocket在線聊天室功能,包括安裝及創(chuàng)建django項(xiàng)目的全過程,通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-09-09基于python實(shí)現(xiàn)分析識別文章/內(nèi)容中的高頻詞和關(guān)鍵詞
要分析一篇文章的高頻詞和關(guān)鍵詞,可以使用 Python 中的 nltk 庫和 collections 庫或者jieba庫來實(shí)現(xiàn),本篇文章介紹基于兩種庫分別實(shí)現(xiàn)分析內(nèi)容中的高頻詞和關(guān)鍵詞,需要的朋友可以參考下2023-09-09詳解Python中的from..import絕對導(dǎo)入語句
絕對導(dǎo)入其實(shí)非常簡單,即是用from語句在import前指明頂層package名,下面我們通過兩個例子來詳解Python中的from..import絕對導(dǎo)入語句2016-06-06Python實(shí)現(xiàn)AI自動玩俄羅斯方塊游戲
提到《俄羅斯方塊》,那真是幾乎無人不知無人不曉。其歷史之悠久,可玩性之持久,能手輕輕一揮,吊打一大波游戲。本文將利用Python實(shí)現(xiàn)俄羅斯方塊進(jìn)階版—AI自動玩俄羅斯方塊,感興趣的可以學(xué)習(xí)一下2022-03-03Python標(biāo)準(zhǔn)庫uuid模塊(生成唯一標(biāo)識)詳解
uuid通過Python標(biāo)準(zhǔn)庫的uuid模塊生成通用唯一ID(或“UUID”)的一種快速簡便的方法,下面這篇文章主要給大家介紹了關(guān)于Python標(biāo)準(zhǔn)庫uuid模塊(生成唯一標(biāo)識)?的相關(guān)資料,需要的朋友可以參考下2022-05-05