记着好象是有次传说转发就能给头像加圣诞帽,后来又是国庆加国旗,情人节加红心。看似神奇,可怎么做到的呢?

其实原理很简单,跟常见的水印一样,只不过位置比较重要些,要放人脸正确的位置上。

人脸检测对Python来说也是个老话题了,OpenCV很早就已经有成熟的方案。

将人脸的特征总结为以上的图例,然后存在一个haarcascade_frontalface_default.xml文件里,可以从opencv网站上下载

特征图里,只有黑白两色,为了降低寻找特征难度,我们需要转化图像为灰度图

img = cv2.imread('girl.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)


然后用detectMultiScale检测出人脸

classifier = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
objects = classifier.detectMultiScale(gray, scaleFactor=1.2, minNeighbors=8, minSize=(8, 8),flags=cv2.CASCADE_SCALE_IMAGE)

这里的参数需要根据具体的图片进行调校,不然可能会找出一些类似人脸的岩石或者头发。
检测出的人脸数据是一个包含坐标和大小的数组,我们用这些数据画一个绿色的圆

  for (x, y, w, h) in objects:# cv2.circle(img, (int((x + x + w) / 2), int((y + y + h) / 2)), int(w / 2), (0, 255, 0), 2)


至于口罩,它应该是高度为人脸的一半,宽度也是一半,很容易可以用公式算出位置

  for (x, y, w, h) in objects:# cv2.circle(img, (int((x + x + w) / 2), int((y + y + h) / 2)), int(w / 2), (0, 255, 0), 2)cv2.rectangle(img, (x+int(w/4), y+int(h/2)), (x + w-int(w/4), y + h), (255, 255, 255), -1)cv2.imshow("girl", img)cv2.waitKey()

至于带子,你可以自己用rectangle再画上。好了,收工

用Python给你的头像加口罩,加圣诞帽,加红心,加加加相关推荐

  1. 使用Python+OpenCV+dlib为人脸生成口罩

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达推荐阅读 42个pycharm使用技巧,瞬间从黑铁变王者Google ...

  2. Python爬微信好友头像,性别,所在地区

    Python爬微信好友头像,性别,所在地区 本文适合新手(有一定基础的小白) 今天没事,用的网页版微信,于是看源码心理作怪,F12打开,研究了一下,结果发现 /斜眼笑/斜眼笑/斜眼笑 再加上,没事干, ...

  3. 面部表情识别java_使用Python+OpenCV+dlib为人脸生成口罩

    来源:深度学习与计算机视觉 本文约4800字,建议阅读6分钟本文试图用OpenCV和dlib库来实现这个过程,在这里我们综合生成5种类型的口罩来绘制人脸图像. 本文使用OpenCV dlib库生成口罩 ...

  4. python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战

    python保存大列表(list)数据到文件并后续重新加载为列表(list)对象实战 笔者遇到的问题是这样的, 在做机器学习模型的时候,有的时候会使用相关性分析的方法来进行特征的筛选,去除冗余特征,降 ...

  5. python command line debug_【已解决】Mac中PyCharm中去加断点实时调试scrapy的项目

    折腾: 后,在之前已经用过PyCharm去加上断点实时调试别的python程序的前提下. 下载希望可以用PyCharm也可以加断点,实时调试scrapy的项目. 不过能想到的是,scrapy这种项目, ...

  6. 用 Python 将 QQ 好友头像生成祝福语

    本文我们来看一下如何使用 Python 将 QQ 好友头像拼成"五一快乐"四个字.我们可以将整个实现过程分为两步:爬取 QQ 好友头像.利用好友头像生成文字. 爬取头像 爬取 QQ ...

  7. Python Day 10 函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal)...

    Python Day 10  函数(名称空间,作用域,作用域链,加载顺序等; 函数的嵌套 global,nonlocal) 名称空间(命名空间): 当程序运行时,代码从上至下一次读取,遇到变量与值, ...

  8. 用python做头像_如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  9. python表白代码照片墙-如何利用python制作微信好友头像照片墙?

    这个不难,主要用到itchat和pillow这2个库,其中itchat用于获取微信好友头像照片,pillow用于拼接头像生成一个照片墙,下面我简单介绍一下实现过程,代码量不多,也很好理解,实验环境wi ...

  10. python 生成q版头像_在python中生成花式头像的最简单方法

    python 生成q版头像 This article is originally published in my personal blog. 本文最初发表在我的个人博客中 . This is a r ...

最新文章

  1. java程序能转变为javafx_如何将intellij中的普通Java项目转换为JavaFx项目
  2. SNF软件开发机器人-子系统-功能-【列表】自由排序-如何配置?
  3. android https 简书,关于Android http改为https
  4. python实现维吉尼亚加密法
  5. python中函数的括号使用
  6. layui中onchange失效以及form动态渲染失效的问题
  7. struts2 常用标签的一般用法
  8. centos rpm 安装 perl_Linux【常用软件安装篇】
  9. 关于Oracle与MySQL的使用总结
  10. l2-008 最长对称子串 (25分)_小学数学关于时间认识(时、分、秒)的几点总结
  11. SAP License:SAP 中的不平
  12. 高清卫星影像DEM数据免费下载,3款软件4个网站推荐收藏!
  13. 再谈iOS视频播放器旋转视图开发
  14. 微信小程序—Flex布局
  15. 计算机网络与Internet发展历史
  16. 独立院校转设,高考新生何去何从|转设对新生有哪些影响
  17. Python获取拥有100万+关注的CSDN公众数据, 发现最关心的竟不是技术,而是…
  18. Windows中cl命令编译运行C++
  19. 第二代身份证与第三代身份证有区别吗?
  20. 常见数据库与数据引擎概念(一)

热门文章

  1. 控制电机正反转的c语言程序,步进电机正反转控制C语言程序,只为初学者.docx
  2. LaTex写实验报告
  3. (附源码)ssm通用数据展示系统 毕业设计 200934
  4. APP兼容性测试如何测试?
  5. Python安装 chardet
  6. 前端html项目总结,前端实习项目总结一
  7. 智能车四轮组打工日记(二)——单电机驱动硬件设计
  8. mysql 嵌套查询优化
  9. uni-app(vue小程序)学习笔记
  10. 印象笔记支持Markdown语法