使用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编写一个简单的Lisp解释器的教程
Apr 03 Python
浅谈Python中的数据类型
May 05 Python
使用pdb模块调试Python程序实例
Jun 02 Python
用python脚本24小时刷浏览器的访问量方法
Dec 07 Python
python基础梳理(一)(推荐)
Apr 06 Python
Python面向对象之类和实例用法分析
Jun 08 Python
手把手教你安装Windows版本的Tensorflow
Mar 26 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
Python中使用threading.Event协调线程的运行详解
May 02 Python
python打包生成so文件的实现
Oct 30 Python
pycharm配置python 设置pip安装源为豆瓣源
Feb 05 Python
python编写扎金花小程序的实例代码
Feb 23 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 cookis创建实现代码
2009/03/16 PHP
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
php源代码安装常见错误与解决办法分享
2013/05/28 PHP
Maps Javascript
2007/01/22 Javascript
javascript SocialHistory 检查访问者是否访问过某站点
2008/08/02 Javascript
分享20款好玩的jQuery游戏
2011/04/17 Javascript
js给dropdownlist添加选项的小例子
2013/03/04 Javascript
让人蛋疼的JavaScript语法特性
2014/09/30 Javascript
对JavaScript的全文搜索实现相关度评分的功能的方法
2015/06/24 Javascript
Jquery ajax 同步阻塞引起的UI线程阻塞问题
2015/11/17 Javascript
Bootstrap打造一个左侧折叠菜单的系统模板(一)
2016/05/17 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
node文件上传功能简易实现代码
2017/06/16 Javascript
vue移动端路由切换实例分析
2018/05/14 Javascript
搭建vue开发环境
2018/07/19 Javascript
JS脚本实现定时到网站上签到/签退功能
2020/04/22 Javascript
原生JS实现汇率转换功能代码实例
2020/05/13 Javascript
在vue中动态修改css其中一个属性值操作
2020/12/07 Vue.js
python 文件操作删除某行的实例
2017/09/04 Python
对TensorFlow中的variables_to_restore函数详解
2018/07/30 Python
一文秒懂python读写csv xml json文件各种骚操作
2019/07/04 Python
flask框架路由常用定义方式总结
2019/07/23 Python
Python大数据之使用lxml库解析html网页文件示例
2019/11/16 Python
Python django搭建layui提交表单,表格,图标的实例
2019/11/18 Python
python 浅谈serial与stm32通信的编码问题
2019/12/18 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
迷你唐卡软皮鞋:Minnetonka Moccasin
2018/05/01 全球购物
比驿:全球酒店比价网
2018/06/20 全球购物
工作所在部门证明
2014/09/21 职场文书
导师工作推荐信
2015/03/27 职场文书
2015暑假假期总结
2015/07/13 职场文书
原生Js 实现的简单无缝滚动轮播图的示例代码
2021/05/10 Javascript
sentinel支持的redis高可用集群配置详解
2022/04/01 Redis
win10滚动条自动往上跑怎么办?win10滚动条自动往上跑的解决方法
2022/08/05 数码科技