用Python给头像加上圣诞帽或圣诞老人小图标
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽。如果不是头像,就加一个圣诞老人陪伴。
用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给头像加上圣诞帽或圣诞老人小图标相关推荐
- python画圣诞帽_使用Python给头像加上圣诞帽或圣诞老人小图标附源码
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...
- python画圣诞老人_使用Python给头像加上圣诞帽或圣诞老人小图标附源码
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...
- python画圣诞帽_用Python给头像加上圣诞帽或圣诞老人小图标
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章:https://zhuanlan.zhi ...
- 用Python给头像加上圣诞帽或圣诞老人小徽章
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章: https://zhuanlan.zh ...
- 圣诞老人python代码_用Python给头像加上圣诞帽或圣诞老人小徽章
随着圣诞的到来,想给给自己的头像加上一顶圣诞帽.如果不是头像,就加一个圣诞老人陪伴. 用Python给头像加上圣诞帽,看了下大概也都是来自2017年大神的文章: https://zhuanlan.zh ...
- python画圣诞帽_用Python给头像加上圣诞帽
原标题:用Python给头像加上圣诞帽 随着圣诞的到来,大家纷纷@官微给自己的头像加上一顶圣诞帽.我们有必要写一个程序来做这件事情. 用到的工具 OpenCV dlib 流程 一.素材准备 首先我们需 ...
- 用Python给头像加上圣诞帽
正文共3743个字,9张图,预计阅读时间22分钟. 01 引言 随着圣诞的到来,大家纷纷@官方微信给自己的头像加上一顶圣诞帽.当然这种事情用很多P图软件都可以做到.但是作为一个学习图像处理的技术人,还 ...
- python头像教程_用Python给头像加上圣诞帽,新手必学
随着圣诞的到来,大家纷纷@官方微信给自己的头像加上一顶圣诞帽.当然这种事情用很多P图软件都可以做到.但是作为一个学习图像处理的技术人,还是觉得我们有必要写一个程序来做这件事情.而且这完全可以作为一个练 ...
- 用python给头像加圣诞帽
首页 算法 社区 帮助 登录 注册 首页 帮助 常见问题 算法管理 算法上传 开发与部署规范 C/C++ Python git管理 算法审核规则 项目说明 个人中心 关于极市 隐私策略 社区 文章详情 ...
最新文章
- php中query()作用,query()方法
- vb调用matlab工具箱,Matlab与VB集成 - 关于VB的经验之谈 - VB爱好者乐园(VBGood) - 关于VB的经验,电子教程,代码,控件,论坛,博客,微博等....
- 一看就懂系列之 如何实现与控制php常驻进程
- [react] 写一个react的高阶组件并说明你对高阶组件的理解
- Spring Cloud Alibaba Nacos 的 2 种健康检查机制!
- Linux-Ubuntu首次使用root账户登录
- js休眠实现sleep[博]
- ISA SERVER 2004之配置网络负载平衡(NLB)
- 【优化预测】基于matlab蝙蝠算法优化LSSVM预测【含Matlab源码 109期】
- 微信小程序 java高校科研管理系统
- 英特尔显卡不支持自定义分辨率N卡解决办法
- 深交所互动平台_“国六”标准实施在即,互动平台“抖出”大波概念股
- PS制作压印效果的logo等
- ctf练习之闯关游戏
- 微信小程序开发框架搭建
- QT 自定义加载等待(Loading)提示框
- java 字符串中判断字母大小写方法
- 初探redis:redis集群的数据分区和故障转移
- Linux平台彻底卸载MySQL总结
- 记2020年元宵节-我又回来了