使用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中的__init__和__new__
Mar 12 Python
使用Python判断IP地址合法性的方法实例
Mar 13 Python
实例讲解Python中的私有属性
Aug 21 Python
python实现在目录中查找指定文件的方法
Nov 11 Python
用Python制作检测Linux运行信息的工具的教程
Apr 01 Python
Python中map和列表推导效率比较实例分析
Jun 17 Python
浅析Python的web.py框架中url的设定方法
Jul 11 Python
python进行两个表格对比的方法
Jun 27 Python
如何用Python实现简单的Markdown转换器
Jul 16 Python
Python爬虫框架scrapy实现downloader_middleware设置proxy代理功能示例
Aug 04 Python
使用keras根据层名称来初始化网络
May 21 Python
python神经网络 tf.name_scope 和 tf.variable_scope 的区别
May 04 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
Array of country list in PHP with Zend Framework
2011/10/17 PHP
基于Snoopy的PHP近似完美获取网站编码的代码
2011/10/23 PHP
解析dedecms空间迁移步骤详解
2013/05/15 PHP
解析WordPress中函数钩子hook的作用及基本用法
2015/12/22 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
php+ajax登录跳转登录实现思路
2016/07/31 PHP
PHP检查网站是否宕机的方法示例
2017/07/24 PHP
extjs fckeditor集成代码
2009/05/10 Javascript
javascript 禁止复制网页
2009/06/11 Javascript
AngularJS学习笔记之基本指令(init、repeat)
2015/06/16 Javascript
react+redux的升级版todoList的实现
2017/12/18 Javascript
js实现鼠标单击Tab表单切换效果
2018/05/16 Javascript
微信小程序自定义对话框弹出和隐藏动画
2018/07/19 Javascript
JavaScript设计模型Iterator实例解析
2020/01/22 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
用python实现批量重命名文件的代码
2012/05/25 Python
Python实现建立SSH连接的方法
2015/06/03 Python
浅析Python编写函数装饰器
2016/03/18 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
PyCharm 常用快捷键和设置方法
2017/12/20 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
django Serializer序列化使用方法详解
2018/10/16 Python
如何在Python中实现goto语句的方法
2019/05/18 Python
用Python实现最速下降法求极值的方法
2019/07/10 Python
Python的numpy库下的几个小函数的用法(小结)
2019/07/12 Python
如何使用python3获取当前路径及os.path.dirname的使用
2019/12/13 Python
Scrapy爬虫文件批量运行的实现
2020/09/30 Python
浅谈CSS3 box-sizing 属性 有趣的盒模型
2019/04/02 HTML / CSS
5分钟弄清楚html5的drag and drop(小结)
2019/04/10 HTML / CSS
HTML5 Canvas绘制五星红旗
2016/05/04 HTML / CSS
韩国休闲女装品牌网站:ANAIS
2016/08/24 全球购物
四年大学自我鉴定
2014/02/17 职场文书
庆祝国庆节标语
2014/10/09 职场文书
车间统计员岗位职责
2015/04/14 职场文书
关于mysql中时间日期类型和字符串类型的选择
2021/11/27 MySQL
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android