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

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

調(diào)整帽子大小,帶帽
選取兩個眼角的點,求中心作為放置帽子的x方向的參考坐標,y方向的坐標用人臉框上線的y坐標表示。然后我們根據(jù)人臉檢測得到的人臉的大小調(diào)整帽子的大小,使得帽子大小合適。
# 選取左右眼眼角的點
point1 = shape.part(0)
point2 = shape.part(2)
# 求兩點中心
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))添加小圖標
當然有些同學的頭像不是人物或不能準確的識別無關,所有添加了標識。(即在右下添加小圖標)。
小圖標避免單調(diào),是從圖標中隨機選擇一個:

代碼如下:
# 水印圖片
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)結果如下

源代碼:https://github.com/silencesmile/Christmas_Hat
總結
以上所述是小編給大家介紹的使用Python給頭像加上圣誕帽或圣誕老人小圖標附源碼,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關文章
基于Python的OpenCV骨架化圖像并顯示(skeletonize)
這篇文章主要介紹了基于Python的OpenCV骨架化圖像并顯示(skeletonize),文中附含詳細的示例代碼,教大家來實現(xiàn)完成,有需要的可以參考下2021-08-08
python使用Paramiko模塊實現(xiàn)遠程文件拷貝
這篇文章主要為大家詳細介紹了python使用Paramiko模塊實現(xiàn)遠程文件拷貝,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-04-04
python對 MySQL 數(shù)據(jù)庫進行增刪改查的腳本
這篇文章主要介紹了python對 MySQL 數(shù)據(jù)庫進行增刪改查的腳本,幫助大家更好的利用python處理數(shù)據(jù)庫,感興趣的朋友可以了解下2020-10-10
Python爬取豆瓣數(shù)據(jù)實現(xiàn)過程解析
這篇文章主要介紹了Python爬取豆瓣數(shù)據(jù)實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-10-10
Python使用Marshmallow輕松實現(xiàn)序列化和反序列化
這篇文章主要為大家詳細介紹了Python如何使用Marshmallow輕松實現(xiàn)序列化和反序列化,文中的示例代碼講解詳細,感興趣的小伙伴可以了解下2025-03-03

