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

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

主要流程

素材准备

人脸检测与人脸关键点检测

调整大小,添加帽子

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

很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。 很多已经做案例的人,却不知道如何去学习更加高深的知识。 那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码! QQ 群:696455390

# 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.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))

添加小图标

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

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

图标位置也可以根据爱好调整大小和位置

代码如下:

# 水印图片  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给头像加上圣诞帽或圣诞老人小徽章相关推荐

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

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

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

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

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

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

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

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

  5. 用Python给头像加上圣诞帽或圣诞老人小图标

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

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

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

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

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

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

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

  9. 用python给头像加圣诞帽

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

最新文章

  1. 吴恩达深度学习课程的漫画版来了!(漫画、视频、笔记都可以下载了!)
  2. C语言学习之一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3,而6=1+2+3,因此6是“完数”。编程序找出1000之内的所有完数。
  3. Hadoop2调优(一):如何控制job的map任务和reduce任务的数量
  4. mysql_real_connect阻塞_mysql_real_connect崩溃、未经处理的异常
  5. Google research 一行预处理代码,让你的CV模型更强!
  6. Pytorch transforms.Resize()的简单用法
  7. React Suite 组件库
  8. 六石管理学:好大喜功,头目们是否相信
  9. 计算机视觉 图像算法工程师 面试问题总结
  10. Dockerfile 概念简介
  11. [TEST123] Performance Test
  12. 结合推荐营销和社交媒体的最佳实践有哪些?
  13. 【程序】STM32使用SPI接口读取93C46存储器上的数据(非软件模拟SPI时序)
  14. oracle 唯一约束 和 唯一索引
  15. 如何最大效率压缩视频文件(ffmpeg)
  16. centos系统安装字体
  17. 正则筛选图片url(js)
  18. 走进PEP8——代码规范
  19. composer 安装阿里云sdk
  20. excel调整坐标轴标签的旋转角度

热门文章

  1. 戴尔-EMC将至强Phi服务器与Tesla GPU纳入PowerEdge
  2. 11、Libgdx的音频
  3. 7、C语言 —— 字符串常用处理函数
  4. 内容主题windows下简单的vbscript自动发送邮件--带附件
  5. 如何在Ubuntu 16.04上使用MySQL 5.6配置Galera集群
  6. Fedora的systemctl命令详解 Fedora配置IP地址/DNS/Networking
  7. WinForm和WPF使用log4net
  8. 【Linux系列】Linux基础知识整理
  9. mysql必知必会--用通配符进行过滤
  10. leetcode 整数反转