520到了! 我用Python拜托周董为我和女友送上祝福!

2021年5月19日 443点热度 0人点赞 0条评论

大家好,我是菜鸟哥!这是我第482篇原创


今天是5月20号,520意为”我爱你“的谐音,5月20日也被认为是网络情人节。在这一天,情侣们都要为彼此送上礼物,来度过美好的一天。作为程序员的我们,自然有着属于自己的节日礼物。


今天,菜鸟哥就通过80行代码,来让女友喜欢的歌星送上对于情侣们的祝福,一起来看看吧。


实现目的

首先,我们通过结果的展示来看一下实现的效果:

图片

从上图可以看到,左侧给出的是情侣合照,而右侧则是周董的帅气照片。在人物照的周围,布满了漂亮的词云装饰图。
仔细观察词云图可以发现,词云的内容是周杰伦的歌曲《告白气球》。大家可以通过程序来制作一款520纪念相册,来用不同的歌曲词云图来装饰和伴侣之间的图片,亦或是情侣们喜欢的歌星的图片。
在520这一天,亲手送给对方。非常具有纪念意义。


程序实现
为了更好的帮助大家对程序有更加详尽的了解,我们通过程序的讲解来进一步深度理解。程序的实现可以分为以下的几个步骤,这几个步骤之间是环环相扣。
  • 图片背景图的提取

  • 词云图的制作

  • 词云图和原图的融合

  • 图片背景图的提取

对于背景图片的提取,也就是将人像分割出来,其余的部分作为背景图,用来后续及逆行词云图的制作,其程序如下所示:

图片

对于背景图像的提取,可以利用百度AI的接口来进行实现,程序首先以二进制的形式读取要进行人像分割的图片,然后利用百度AI的接口进行人像分割,返回”labelmap“,也就是人像分割的结果。

对于分割的结果,需要通过numpy和opencv进行二次的处理后,才能保存到本地的self.forground_path文件中。其分割出来的效果如下图所示。

图片

分割的结果中,人像呈现黑色,而背景图则是灰色。

词云图的制作

得到了背景图之后,接下来就可以利用stylecloud库来进行词云图的制作。程序如下图所示:

图片

程序首先读取歌词信息,然后利用jieba库进行分词处理,通过设置stop_words来去除分词结果中的无用词语。最后通过stylecloud库来生成词云图。

可以看到gen_stylecloud函数中的mask_path传入的正是我们上面生成的背景图。最后我们将生成的词云图在保存到self.forground_path文件中。

其词云图的结果如下图所示:

图片

可以看到,词云图中以人像的背景图作为mask,生成了词云图,接下来就是将我们的词云图与原始的输入图像进行融合,得到最终的结果图。

词云图和原图的融合

得到词云的结果后,接下来就是将词云和原图进行结合,得到最终的结果,程序如下图所示:

图片

程序通过opencv库,将词云图进行二值化处理,提取处词云图中的词云数据,然后通过”与操作“,分别保留了原图中除去词云之外的图像信息,命名为img1_bg,保留词云图中的词云数据,命名为img2_fg。最后将img1_bg和img2_fg相加,即可得到最终的结果图:

图片

总结:

以上就是小编为大家带来的520分享礼物,大家可以按照上述的程序,制作属于自己的520礼物。当然了,对比这样的礼物,能够给伴侣来一场购物大狂欢是更加实际的!

关于520,大家有什么想说的,欢迎在留言区吱一声~,记得给个三连哦!


如何获取源码:

可以在本公众号「菜鸟学Python」后台输入:小助手,找他获取,暗号:520

图片


推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径


干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影


趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!


AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影


小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!


年度爆款文案

70010520到了! 我用Python拜托周董为我和女友送上祝福!

这个人很懒,什么都没留下

文章评论