使用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 正则表达式 概述及常用字符
May 04 Python
在Python程序中实现分布式进程的教程
Apr 28 Python
Python中如何优雅的合并两个字典(dict)方法示例
Aug 09 Python
Python实现学生成绩管理系统
Apr 05 Python
Python中的单行、多行、中文注释方法
Jul 19 Python
python数据持久存储 pickle模块的基本使用方法解析
Aug 30 Python
如何分离django中的媒体、静态文件和网页
Nov 12 Python
python中 _、__、__xx__()区别及使用场景
Jun 30 Python
python 实现关联规则算法Apriori的示例
Sep 30 Python
Python爬虫新手入门之初学lxml库
Dec 20 Python
Django程序的优化技巧
Apr 29 Python
教你利用Selenium+python自动化来解决pip使用异常
May 20 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以post形式发送xml的方法
2014/11/04 PHP
PHP生成及获取JSON文件的方法
2016/08/23 PHP
PHP实现的CURL非阻塞调用类
2018/07/26 PHP
javascript indexOf函数使用说明
2008/07/03 Javascript
javascript 冒号 使用说明
2009/06/06 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
JS中使用sort结合localeCompare实现中文排序实例
2014/07/23 Javascript
JavaScript获取鼠标移动时的坐标(兼容IE8、chome谷歌、Firefox)
2014/09/13 Javascript
原生javascript实现匀速运动动画效果
2016/02/26 Javascript
理解javascript正则表达式
2016/03/08 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
vue.js学习笔记之绑定style样式和class列表
2016/10/31 Javascript
Ajax跨域实现代码(后台jsp)
2017/01/21 Javascript
Vue 仿百度搜索功能实现代码
2017/02/16 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
Vue的MVVM实现方法
2017/08/16 Javascript
vue2.0 使用element-ui里的upload组件实现图片预览效果方法
2018/09/04 Javascript
vue+VeeValidate 校验范围实例详解(部分校验,全部校验)
2018/10/19 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
本地文件上传到七牛云服务器示例(七牛云存储)
2014/01/11 Python
Python如何判断数独是否合法
2016/09/08 Python
Python使用win32com实现的模拟浏览器功能示例
2017/07/13 Python
python+matplotlib绘制简单的海豚(顶点和节点的操作)
2018/01/02 Python
Python用for循环实现九九乘法表
2018/05/31 Python
Python+OpenCV实现实时眼动追踪的示例代码
2019/11/11 Python
tensorflow之并行读入数据详解
2020/02/05 Python
django序列化时使用外键的真实值操作
2020/07/15 Python
python实现mask矩阵示例(根据列表所给元素)
2020/07/30 Python
BLACKMORES澳洲官网:澳大利亚排名第一的保健品牌
2018/09/27 全球购物
计算机专业大学生的自我评价
2013/11/14 职场文书
优秀生推荐信范文
2013/11/28 职场文书
护士毕业自我鉴定
2014/02/07 职场文书
弘扬职业精神演讲稿
2014/03/20 职场文书
招标授权委托书样本
2014/09/23 职场文书
2015年乡镇食品安全工作总结
2015/10/22 职场文书