随着圣诞的到来,想给给自己的头像加上一顶圣诞帽。如果不是头像,就加一个圣诞老人陪伴。

用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhihu.com/p/32283641

主要流程
素材准备
人脸检测与人脸关键点检测
调整大小,添加帽子

用dlib的正脸检测器进行人脸检测,用dlib提供的模型提取人脸的五个关键点

# dlib人脸关键点检测器predictor_path = "shape_predictor_5_face_landmarks.dat"predictor = dlib.shape_predictor(predictor_path)  # dlib正脸检测器detector = dlib.get_frontal_face_detector()# 正脸检测dets = detector(img, 1)# 如果检测到人脸if len(dets)>0:  for d in dets:x,y,w,h = d.left(),d.top(), d.right()-d.left(), d.bottom()-d.top()# x,y,w,h = faceRect  cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2,8,0)# 关键点检测,5个关键点shape = predictor(img, d)for point in shape.parts():cv2.circle(img,(point.x,point.y),3,color=(0,255,0))cv2.imshow("image",img)cv2.waitKey()  

调整帽子大小,带帽

选取两个眼角的点,求中心作为放置帽子的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.5resized_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)) 

添加小图标

当然有些同学的头像不是人物或不能准确的识别无关,所有添加了标识。(即在右下添加小图标)。

小图标避免单调,是从图标中随机选择一个:

代码如下:

    # 水印图片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)
结果如下

代码获取:关注公众号,回复:20191224 或 圣诞

用Python给头像加上圣诞帽或圣诞老人小图标相关推荐

  1. python画圣诞帽_使用Python给头像加上圣诞帽或圣诞老人小图标附源码

    随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...

  2. python画圣诞老人_使用Python给头像加上圣诞帽或圣诞老人小图标附源码

    随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...

  3. python画圣诞帽_用Python给头像加上圣诞帽或圣诞老人小图标

    随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...

  4. 用Python给头像加上圣诞帽或圣诞老人小徽章

    随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章: https://zhuanlan.zh ...

  5. 圣诞老人python代码_用Python给头像加上圣诞帽或圣诞老人小徽章

    随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章: https://zhuanlan.zh ...

  6. python画圣诞帽_用Python给头像加上圣诞帽

    原标题:用Python给头像加上圣诞帽 随着圣诞的到来,大家纷纷@官微给自己的头像加上一顶圣诞帽.我们有必要写一个程序来做这件事情. 用到的工具 OpenCV dlib 流程 一.素材准备 首先我们需 ...

  7. 用Python给头像加上圣诞帽

    正文共3743个字,9张图,预计阅读时间22分钟. 01 引言 随着圣诞的到来,大家纷纷@官方微信给自己的头像加上一顶圣诞帽.当然这种事情用很多P图软件都可以做到.但是作为一个学习图像处理的技术人,还 ...

  8. python头像教程_用Python给头像加上圣诞帽,新手必学

    随着圣诞的到来,大家纷纷@官方微信给自己的头像加上一顶圣诞帽.当然这种事情用很多P图软件都可以做到.但是作为一个学习图像处理的技术人,还是觉得我们有必要写一个程序来做这件事情.而且这完全可以作为一个练 ...

  9. 用python给头像加圣诞帽

    首页 算法 社区 帮助 登录 注册 首页 帮助 常见问题 算法管理 算法上传 开发与部署规范 C/C++ Python git管理 算法审核规则 项目说明 个人中心 关于极市 隐私策略 社区 文章详情 ...

最新文章

  1. php中query()作用,query()方法
  2. vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
  3. 一看就懂系列之 如何实现与控制php常驻进程
  4. [react] 写一个react的高阶组件并说明你对高阶组件的理解
  5. Spring Cloud Alibaba Nacos 的 2 种健康检查机制!
  6. Linux-Ubuntu首次使用root账户登录
  7. js休眠实现sleep[博]
  8. ISA SERVER 2004之配置网络负载平衡(NLB)
  9. 【优化预测】基于matlab蝙蝠算法优化LSSVM预测【含Matlab源码 109期】
  10. 微信小程序 java高校科研管理系统
  11. 英特尔显卡不支持自定义分辨率N卡解决办法
  12. 深交所互动平台_“国六”标准实施在即,互动平台“抖出”大波概念股
  13. PS制作压印效果的logo等
  14. ctf练习之闯关游戏
  15. 微信小程序开发框架搭建
  16. QT 自定义加载等待(Loading)提示框
  17. java 字符串中判断字母大小写方法
  18. 初探redis:redis集群的数据分区和故障转移
  19. Linux平台彻底卸载MySQL总结
  20. 记2020年元宵节-我又回来了

热门文章

  1. creator shader:从零开始,用shader画个彩虹
  2. HTML5实现歌词同步
  3. Unity(新机)安装失败解决办法
  4. 数据提取之JSON与JsonPATH
  5. 感知器算法例题ppt_感知器的训练算法
  6. Red Hat Enterprise Linux 各个版本以及发布日期
  7. 龙腾传世变态服务器网站,龙腾传世 变态版
  8. android百分号运算符计算器,请教这个计算器中的百分号与分数计算的代码。
  9. 大一期中c语言答案,C语言期中考试题目及答案
  10. 面向对象编程(OOP)、面向组件编程(COP)、面向方面编程(AOP)和面向服务编程(SOP)