使用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中metaclass元类的创建与使用
Jun 30 Python
pandas.DataFrame 根据条件新建列并赋值的方法
Apr 08 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
Jul 31 Python
opencv与numpy的图像基本操作
Mar 08 Python
Python玩转加密的技巧【推荐】
May 13 Python
Python自定义一个异常类的方法
Jun 27 Python
Python文件操作中进行字符串替换的方法(保存到新文件/当前文件)
Jun 28 Python
使用tensorflow显示pb模型的所有网络结点方式
Jan 23 Python
python GUI库图形界面开发之PyQt5菜单栏控件QMenuBar的详细使用方法与实例
Feb 28 Python
PyCharm设置Ipython交互环境和宏快捷键进行数据分析图文详解
Apr 23 Python
python 列表推导和生成器表达式的使用
Feb 01 Python
python中if和elif的区别介绍
Nov 07 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
PHP 中的一些经验积累
2006/10/09 PHP
PHP开发中常见的安全问题详解和解决方法(如Sql注入、CSRF、Xss、CC等)
2014/04/21 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
javascript正则表达式参数/g与/i及/gi的使用指南
2014/08/27 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
javascript图片预览和上传(兼容IE)
2017/03/15 Javascript
js实现数组和对象的深浅拷贝
2017/09/30 Javascript
浅谈Vue 性能优化之深挖数组
2018/12/11 Javascript
3分钟读懂移动端rem使用方法(推荐)
2019/05/06 Javascript
vue自动化路由的实现代码
2019/09/30 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
关于JavaScript数组去重的一些理解汇总
2020/09/10 Javascript
[09:23]国际邀请赛采访专栏:iG战队VK,Tongfu战队Cu
2013/08/05 DOTA
用python实现批量重命名文件的代码
2012/05/25 Python
跟老齐学Python之编写类之一创建实例
2014/10/11 Python
python机器学习理论与实战(二)决策树
2018/01/19 Python
Python中请不要再用re.compile了
2019/06/30 Python
Python3内置模块random随机方法小结
2019/07/13 Python
Python递归及尾递归优化操作实例分析
2020/02/01 Python
python中有帮助函数吗
2020/06/19 Python
termux中matplotlib无法显示中文问题的解决方法
2021/01/11 Python
巴西宠物商店:Cobasi
2019/04/19 全球购物
Ibatis如何调用存储过程
2015/05/15 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
监理员的岗位职责
2013/11/13 职场文书
煤矿机修工岗位职责
2014/02/07 职场文书
计算机专业毕业生自荐信范文
2014/03/06 职场文书
技术总监管理职责范本
2014/03/06 职场文书
会计岗位职责范本
2014/03/07 职场文书
志愿者活动总结范文
2014/04/26 职场文书
临床护理求职信
2014/04/26 职场文书
党员个人剖析材料(四风问题)
2014/10/07 职场文书
教师评职称工作总结2015
2015/04/20 职场文书
2015年党总支工作总结
2015/05/25 职场文书