import cv2
import random

# OpenCV 人脸检测
face_patterns = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
sample_image = cv2.imread('img/fffc.jpg')
faces = face_patterns.detectMultiScale(sample_image,
                                       scaleFactor=1.1,
                                       minNeighbors=8,
                                       minSize=(50, 50))
# 圣诞帽
hats = []
for i in range(4):
    hats.append(cv2.imread('img/hat%d.png' % i, -1))

for face in faces:
    # 随机一顶帽子
    hat = random.choice(hats)
    # 调整帽子尺寸
    scale = face[3] / hat.shape[0] * 1.25
    hat = cv2.resize(hat, (0, 0), fx=scale, fy=scale)
    # 根据人脸坐标调整帽子位置
    x_offset = int(face[0] + face[2] / 2 - hat.shape[1] / 2)
    y_offset = int(face[1] - hat.shape[0] / 2)
    # 计算贴图位置,注意防止超出边界的情况
    x1, x2 = max(x_offset, 0), min(x_offset + hat.shape[1], sample_image.shape[1])
    y1, y2 = max(y_offset, 0), min(y_offset + hat.shape[0], sample_image.shape[0])
    hat_x1 = max(0, -x_offset)
    hat_x2 = hat_x1 + x2 - x1
    hat_y1 = max(0, -y_offset)
    hat_y2 = hat_y1 + y2 - y1
    # 透明部分的处理
    alpha_h = hat[hat_y1:hat_y2, hat_x1:hat_x2, 3] / 255
    alpha = 1 - alpha_h
    # 按3个通道合并图片
    for c in range(0, 3):
        sample_image[y1:y2, x1:x2, c] = (alpha_h * hat[hat_y1:hat_y2, hat_x1:hat_x2, c] + alpha * sample_image[y1:y2, x1:x2, c])

# 保存最终结果

cv2.imwrite('faces_detect.png', sample_image)

依赖的库在https://github.com/zwd1993/faceHats

如何给头像增加圣诞帽相关推荐

  1. 微信官方都辟谣,可真有技术人用 AI、大数据实现头像添加圣诞帽了!

    点击上方"CSDN",选择"置顶公众号" 关键时刻,第一时间送达! 从昨天到现在,朋友圈里便持续性地见到了许多"请给我一顶圣诞帽@微信官方" ...

  2. 使用paddlehub给头像添加圣诞帽(GUI版)

    我的前一篇博客:使用PaddleHub给头像添加圣诞帽已经详细介绍了如何使用paddlehub给头像添加一个圣诞帽,但之前的版本由于时间仓促还存在一些问题: 圣诞帽超出头像边界程序会报错 无法识别出人 ...

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

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

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

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

  5. python自动给头像添加圣诞帽

    通知:今年的圣诞节推迟到2021年1月8日,因为圣诞老人到了之后还要被隔离14天. 马上就要圣诞节了,大家想好送什么礼物给自己对象了吗? 因为疫情原因,圣诞老人不能来中国给我们送礼物了,所以今年由我来 ...

  6. 超简单 Python 头像戴圣诞帽教程

    还记得疫情之初,我们用Python给头像戴口罩的文章吗? 开工第一天,先用Python戴个口罩 当时只是简单的调用了第三方模块将口罩图片替换入原图,内容非常简短. 今天,将为大家提供一个能够通过以下三 ...

  7. 不用P图!用Python给头像加圣诞帽并制作成可执行软件!

    文 | 闲欢 来源:Python 技术「ID: pythonall」 随着圣诞节的到来,节日气氛也越来越浓厚.大街上随处可见挂满饰品的圣诞树,好多小伙伴的头上也多了一顶红色牛角的圣诞帽. 往年在这个时 ...

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

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

  9. 用python给头像加圣诞帽

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

最新文章

  1. HttpRequest接口测试
  2. Tricks with Direct Memory Access in Java
  3. varchar 求和 非数值_考研线性代数 解题方法汇总(非知识点汇总)
  4. python杀线程_python-有什么办法可以杀死线程吗?
  5. ubuntu 下的文件校验(md5、sha256)
  6. 【转】VC6下安装与配置OpenCV1.0
  7. android 代码混淆 垃圾代码制造
  8. 工具-cloc代码行数统计工具
  9. VS2019安装QT5.14.1全过程
  10. oracle instance client 下载,安装Oracle Instance Client
  11. 高通平台开发系列讲解(音频篇)Codec驱动移植步骤
  12. 缺陷管理工具-QC篇
  13. 关于skb_make_writable()函数
  14. java license机制dll_(转)使用truelicense实现用于JAVA工程license机制(包括license生成和验证)...
  15. 用python做成绩分析做表格_excel成绩表-懂Excel就能轻松入门Python数据分析包pandas(三):制作成绩条...
  16. 5 torch.utils.data (Dataset,TensorDataset,DataLoader)
  17. Oracle使用脚本导出数据(spool)
  18. 线性代数回顾(多视图重建)
  19. 怎么用计算机管理你的外卖订单,外卖系统怎么确定收到订单 外卖接单软件怎么做...
  20. C语言-switch-case语句与多分支结构

热门文章

  1. cs:app 第二章homework(已完结)
  2. 天宇优配|特高压概念强势拉升,大东南、积成电子涨停,
  3. 可监测体重自动调节投食量的智能喂猫机
  4. 1.1python初入网络爬虫-网络连接和BeautifulSoup库的使用
  5. 爱立信亚太区CTO:预计全球在2021年会有280亿联网设备
  6. 什么品牌的蓝牙耳机音质好?盘点四款佩戴舒适的蓝牙耳机
  7. frame和iframe的区别 ------copy滴
  8. redis漏洞防攻击
  9. 趣味理解网关、路由等概念
  10. ununtu14安装ipset-6.24