使用Python给头像加上圣诞帽或圣诞老人小图标附源码


Posted in Python onDecember 25, 2019

随着圣诞的到来,想给给自己的头像加上一顶圣诞帽。如果不是头像,就加一个圣诞老人陪伴。

使用Python给头像加上圣诞帽或圣诞老人小图标附源码

使用Python给头像加上圣诞帽或圣诞老人小图标附源码

用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhihu.com/p/32283641

主要流程
素材准备
人脸检测与人脸关键点检测

调整大小,添加帽子

用dlib的正脸检测器进行人脸检测,用dlib提供的模型提取人脸的五个关键点

使用Python给头像加上圣诞帽或圣诞老人小图标附源码

调整帽子大小,带帽

选取两个眼角的点,求中心作为放置帽子的x方向的参考坐标,y方向的坐标用人脸框上线的y坐标表示。然后我们根据人脸检测得到的人脸的大小调整帽子的大小,使得帽子大小合适。

# 选取左右眼眼角的点
    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()
    # 根据人脸大小调整帽子大小
    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
    # 根据人脸大小调整帽子大小
    resized_hat = cv2.resize(rgb_hat,(resized_hat_w,resized_hat_h))

添加小图标

当然有些同学的头像不是人物或不能准确的识别无关,所有添加了标识。(即在右下添加小图标)。

小图标避免单调,是从图标中随机选择一个:

使用Python给头像加上圣诞帽或圣诞老人小图标附源码

代码如下:

# 水印图片
 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)

结果如下

使用Python给头像加上圣诞帽或圣诞老人小图标附源码

源代码:https://github.com/silencesmile/Christmas_Hat

总结

以上所述是小编给大家介绍的使用Python给头像加上圣诞帽或圣诞老人小图标附源码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Python 相关文章推荐
python实现支持目录FTP上传下载文件的方法
Jun 03 Python
python基本语法练习实例
Sep 19 Python
1分钟快速生成用于网页内容提取的xslt
Feb 23 Python
Linux-ubuntu16.04 Python3.5配置OpenCV3.2的方法
Apr 02 Python
linux下python使用sendmail发送邮件
May 22 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
Nov 20 Python
浅谈python函数调用返回两个或多个变量的方法
Jan 23 Python
详解django2中关于时间处理策略
Mar 06 Python
python基于递归解决背包问题详解
Jul 03 Python
python 用 xlwings 库 生成图表的操作方法
Dec 22 Python
Python实现简单猜数字游戏
Feb 03 Python
Python实现生活常识解答机器人
Jun 28 Python
如何基于python测量代码运行时间
Dec 25 #Python
python字典setdefault方法和get方法使用实例
Dec 25 #Python
Python 内置变量和函数的查看及说明介绍
Dec 25 #Python
python @propert装饰器使用方法原理解析
Dec 25 #Python
python 消除 futureWarning问题的解决
Dec 25 #Python
提升python处理速度原理及方法实例
Dec 25 #Python
python pip安装包出现:Failed building wheel for xxx错误的解决
Dec 25 #Python
You might like
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
用php来检测proxy
2006/10/09 PHP
PHP把数字转成人民币大写的函数分享
2014/06/30 PHP
最准确的php截取字符串长度函数
2015/10/29 PHP
js 利用image对象实现图片的预加载提高访问速度
2013/03/29 Javascript
js复制到剪切板的实例方法
2013/06/28 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
JavaScript动态创建link标签到head里的方法
2014/12/22 Javascript
纯JS实现本地图片预览的方法
2015/07/31 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
JavaScript实现跟随滚动缓冲运动广告框
2017/07/15 Javascript
微信小程序之前台循环数据绑定
2017/08/18 Javascript
详解Vuex中mapState的具体用法
2017/09/28 Javascript
20行JS代码实现粘贴板复制功能
2018/02/06 Javascript
基于Vue的商品主图放大镜方案详解
2019/09/19 Javascript
使用node.JS中的url模块解析URL信息
2020/02/06 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
Element InputNumber 计数器的实现示例
2020/08/03 Javascript
js 函数性能比较方法
2020/08/24 Javascript
Python3使用requests包抓取并保存网页源码的方法
2016/03/15 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
2018/10/16 Python
Python3模拟curl发送post请求操作示例
2019/05/03 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
Pandas时间序列重采样(resample)方法中closed、label的作用详解
2019/12/10 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
python用opencv完成图像分割并进行目标物的提取
2020/05/25 Python
python中selenium库的基本使用详解
2020/07/31 Python
ProBikeKit澳大利亚:自行车套件,跑步和铁人三项装备
2016/11/30 全球购物
斯凯奇新西兰官网:SKECHERS新西兰
2018/02/22 全球购物
美味咖啡的顶级烘焙师:Cafe Britt
2018/03/15 全球购物
迪卡侬比利时官网:Decathlon比利时
2019/12/28 全球购物
数据库基础的一些面试题
2012/02/25 面试题
护校行动方案
2014/05/31 职场文书
《抽屉原理》教学反思
2016/02/20 职场文书
MySQL磁盘碎片整理实例演示
2022/04/03 MySQL