使用Python給頭像加上圣誕帽或圣誕老人小圖標(biāo)附源碼
隨著圣誕的到來(lái),想給給自己的頭像加上一頂圣誕帽。如果不是頭像,就加一個(gè)圣誕老人陪伴。

用Python給頭像加上圣誕帽,看了下大概也都是來(lái)自2017年大神的文章:https://zhuanlan.zhihu.com/p/32283641
主要流程
素材準(zhǔn)備
人臉檢測(cè)與人臉關(guān)鍵點(diǎn)檢測(cè)
調(diào)整大小,添加帽子
用dlib的正臉檢測(cè)器進(jìn)行人臉檢測(cè),用dlib提供的模型提取人臉的五個(gè)關(guān)鍵點(diǎn)

調(diào)整帽子大小,帶帽
選取兩個(gè)眼角的點(diǎn),求中心作為放置帽子的x方向的參考坐標(biāo),y方向的坐標(biāo)用人臉框上線(xiàn)的y坐標(biāo)表示。然后我們根據(jù)人臉檢測(cè)得到的人臉的大小調(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)確的識(shí)別無(wú)關(guān),所有添加了標(biāo)識(shí)。(即在右下添加小圖標(biāo))。
小圖標(biāo)避免單調(diào),是從圖標(biāo)中隨機(jī)選擇一個(gè):

代碼如下:
# 水印圖片
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)附源碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
簡(jiǎn)單談?wù)刾ython中的lambda表達(dá)式
Lambda表達(dá)式在Python中經(jīng)常使用到,本文是給大家分享的小編總結(jié)出來(lái)的Lambda表達(dá)式的常用方法。2018-01-01
基于Python的OpenCV骨架化圖像并顯示(skeletonize)
這篇文章主要介紹了基于Python的OpenCV骨架化圖像并顯示(skeletonize),文中附含詳細(xì)的示例代碼,教大家來(lái)實(shí)現(xiàn)完成,有需要的可以參考下2021-08-08
python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝
這篇文章主要為大家詳細(xì)介紹了python使用Paramiko模塊實(shí)現(xiàn)遠(yuǎn)程文件拷貝,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
python對(duì) MySQL 數(shù)據(jù)庫(kù)進(jìn)行增刪改查的腳本
這篇文章主要介紹了python對(duì) MySQL 數(shù)據(jù)庫(kù)進(jìn)行增刪改查的腳本,幫助大家更好的利用python處理數(shù)據(jù)庫(kù),感興趣的朋友可以了解下2020-10-10
Python爬取豆瓣數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析
這篇文章主要介紹了Python爬取豆瓣數(shù)據(jù)實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10
Python使用Marshmallow輕松實(shí)現(xiàn)序列化和反序列化
這篇文章主要為大家詳細(xì)介紹了Python如何使用Marshmallow輕松實(shí)現(xiàn)序列化和反序列化,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-03-03

