使用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中lambda函数 list comprehension 和 zip函数使用指南
Sep 28 Python
Django中URLconf和include()的协同工作方法
Jul 20 Python
Python使用Scrapy保存控制台信息到文本解析
Dec 27 Python
Python+matplotlib实现填充螺旋实例
Jan 15 Python
用Eclipse写python程序
Feb 10 Python
unittest+coverage单元测试代码覆盖操作实例详解
Apr 04 Python
python3+PyQt5实现自定义分数滑块部件
Apr 24 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
10 分钟快速入门 Python3的教程
Jan 29 Python
python实现可变变量名方法详解
Jul 01 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
python 元组和列表的区别
Dec 30 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
PL-880隐藏功能
2021/03/01 无线电
在PHP3中实现SESSION的功能(二)
2006/10/09 PHP
php URL验证正则表达式
2011/07/19 PHP
PHP数据集构建JSON格式及新数组的方法
2012/11/07 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
ThinkPHP文件缓存类代码分享
2015/04/22 PHP
Laravel事件监听器用法实例分析
2019/03/12 PHP
12个非常有创意的JavaScript小游戏
2010/03/18 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
2014/10/31 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
jQuery+Ajax+PHP+Mysql实现分页显示数据实例讲解
2015/09/27 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
JS获取checkbox的个数简单实例
2016/08/19 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
javascript连接mysql与php通过odbc连接任意数据库的实例
2017/12/27 Javascript
详解element-ui级联菜单(城市三级联动菜单)和回显问题
2019/10/02 Javascript
Vue 解决多级动态面包屑导航的问题
2019/11/04 Javascript
JS中FormData类实现文件上传
2020/03/27 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
Python代码解决RenderView窗口not found问题
2016/08/28 Python
Python实现批量压缩图片
2018/01/25 Python
pyqt5 实现 下拉菜单 + 打开文件的示例代码
2019/06/20 Python
基于python3 pyQt5 QtDesignner实现窗口化猜数字游戏功能
2019/07/15 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Python绘制二维曲线的日常应用详解
2019/12/04 Python
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
Athleta官网:购买女士瑜伽服、技术运动服和休闲运动服
2020/11/12 全球购物
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
应用数学自荐书范文
2013/11/24 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
爱心倡议书范文
2014/05/12 职场文书
小学“向国旗敬礼”网上签名寄语活动总结
2014/09/27 职场文书
毕业感言怎么写
2015/07/31 职场文书