首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python:有你们在的样子真好

Python:有你们在的样子真好

作者头像
TTTEED
发布2020-07-09 11:25:00
3030
发布2020-07-09 11:25:00
举报

2018走到了年尾,这一年经历如何,收获几多?

很感激这一年来遇到的各路贵人、朋友,以及一直默默支持我的家人。

今天,我想用Python来表达:有你们在的样子真好~

以上是效果图,通过获取微信好友头像图片组成背景,与个人头像融合,生成新的头像图片

思路

利用开源的微信接口itchat,扫码登录个人微信,读取好友信息中的头像存到本地,对头像图片进行裁剪、拼接和融合,最后将生成的图片再发送至微信的文件传输助手。

其实获取头像图片的步骤并不复杂,按照itchat文档指引代码量很小。自己要做的集中在对图片文件的处理,需要些耐心。

itchat

itchat是一个开源的微信个人号接口,使用python调用微信从未如此简单。

使用不到三十行的代码,你就可以完成一个能够处理所有信息的微信机器人。

首先是安装 pip install itchat,在代码中 import itchat,之后直接调用方法即可。

#扫码登录
itchat.auto_login()
#获取好友列表
friendlist = itchat.get_friends(update=True)
# 发给文件助手
itchat.send_image('result.jpg', 'filehelper')
#退出登录
itchat.logout()

获取头像图片

通过好友列表中的信息,读取头像图片内容,存储到本地,这样就完成了头像素材的获取。

好友如果很多,这个阶段耗时会较长。此外这个过程中发现有的好友可能是没有设置头像、或者头像格式比较特殊,会导致读取失败,这里要利用try except语法来进行控制。

裁剪拼接

由于每个头像图片大小不一,需要统一标准裁剪。根据头像数量,计算略大些的平方数来设置拼接后的方图尺寸。

例如,你的好友数600,略大些的平方数是25的平方625,最终拼接图大小会定为25*25头像尺寸。剩余空白位置会填充用过的头像。此外好友头像如果获取失败,在这里我会读取到的本人头像来替换,数目小先忽略。

图片融合

图像融合是在图像加法的基础上增加了系数和亮度调节量,主要调用的函数是 addWeighted 方法:

dst = cv2.addWeighter(scr1, alpha, src2, beta, gamma)

其中,alpha 为 src1 透明度,beta 为 src2 透明度,即

目标图像 = 图像1 * 透明度1 + 图像2 * 透明度2 + 亮度调节量

这里我采用了原个人头像0.7系数、背景头像集合图0.3系数:

result = cv2.addWeighted(src1,0.7,src2,0.3,0)

最终生成融合图,通过itchat发送到文件传输助手方便使用~

最后再附一张生成的测试图

回顾

最初的想法是用好友头像图片来实现“千图成像”的效果,实践过程中发现要么使用头像不全、要么复杂不够美观,所以暂时采用了融合图这种简单直接的模式来做个样本。

当然,相关的千图成像算法会继续研究。

此外关于itchat的应用真的很值得一看,之后我也要多挖掘些相关的应用。

代码下载

后台回复 新头像 获取代码

最最后,Happy Friday,周末愉快!

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 TTTEED 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档