使用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实现随机密码字典生成器示例
Apr 09 Python
Python中函数的用法实例教程
Sep 08 Python
搞笑的程序猿:看看你是哪种Python程序员
Jun 12 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
Sep 18 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
Dec 17 Python
使用Python进行体育竞技分析(预测球队成绩)
May 16 Python
python变量的存储原理详解
Jul 10 Python
Python3.7实现验证码登录方式代码实例
Feb 14 Python
Python模拟伯努利试验和二项分布代码实例
May 27 Python
python + selenium 刷B站播放量的实例代码
Jun 12 Python
python如何删除文件、目录
Jun 23 Python
关于django python manage.py startapp 应用名出错异常原因解析
Dec 15 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php图片上传类 附调用方法
2016/05/15 PHP
laravel5.5安装jwt-auth 生成token令牌的示例
2019/10/24 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
jquery与google map api结合使用 控件,监听器
2010/03/04 Javascript
几个比较实用的JavaScript 测试及效验工具
2010/04/18 Javascript
nodejs win7下安装方法
2012/05/24 NodeJs
jQuery+css+html实现页面遮罩弹出框
2013/03/21 Javascript
javascript ajax 仿百度分页函数
2013/10/29 Javascript
构造函数+原型模式构造js自定义对象(最通用)
2014/05/12 Javascript
JS实现的简易拖放效果示例
2016/12/29 Javascript
BootStrapValidator初使用教程详解
2017/02/10 Javascript
微信小程序 http请求的session管理
2017/06/07 Javascript
Vue.set()实现数据动态响应的方法
2018/02/07 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
2018/11/07 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
微信小程序身份证验证方法实现详解
2019/06/28 Javascript
layer插件实现在弹出层中弹出一警告提示并关闭弹出层的方法
2019/09/24 Javascript
[00:33]DOTA2上海特级锦标赛 CDEC战队宣传片
2016/03/04 DOTA
使用Python编写简单的画图板程序的示例教程
2015/12/08 Python
1 行 Python 代码快速实现 FTP 服务器
2018/01/25 Python
python实现word 2007文档转换为pdf文件
2018/03/15 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
django mysql数据库及图片上传接口详解
2019/07/18 Python
python3 批量获取对应端口服务的实例
2019/07/25 Python
如何使用python操作vmware
2019/07/27 Python
python用pip install时安装失败的一系列问题及解决方法
2020/02/24 Python
Jupyter加载文件的实现方法
2020/04/14 Python
什么是python类属性
2020/06/10 Python
如何利用Python写个坦克大战
2020/11/18 Python
美国领先的户外服装与装备用品店:Moosejaw
2016/08/25 全球购物
Lookfantastic台湾:英国彩妆美发保养购物网
2018/03/26 全球购物
意大利拉斐尔时尚购物网:Raffaello Network(支持中文)
2018/11/09 全球购物
计算机毕业大学生推荐信
2013/12/01 职场文书
超市督导岗位职责
2015/04/10 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL