今天是5月20号,520意为”我爱你“的谐音,5月20日也被认为是网络情人节。在这一天,情侣们都要为彼此送上礼物,来度过美好的一天。作为程序员的我们,自然有着属于自己的节日礼物。
今天,小编就通过80行代码,来让女友喜欢的歌星送上对于情侣们的祝福,一起来看看吧。
需要源码的朋友可以扣扣搜索:797403929 进群下载,也欢迎对python感兴趣的朋友进裙一起交流学习
实现目的
首先,我们通过结果的展示来看一下实现的效果:
从上图可以看到,左侧给出的是情侣合照,而右侧则是周董的帅气照片。在人物照的周围,布满了漂亮的词云装饰图。
仔细观察词云图可以发现,词云的内容是周杰伦的歌曲《告白气球》。大家可以通过程序来制作一款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礼物。当然了,对比这样的礼物,能够给伴侣来一场购物大狂欢是更加实际的!
在这里推荐下我的Python开发学习群:797403929,群里都是学Python开发的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份最新的Python进阶资料和高级开发教程,欢迎进阶中和进想深入Python的小伙伴!
免责声明:本文内容来源于网络,文章版权归原作者所有,意在传播相关技术知识&行业趋势,供大家学习交流,若涉及作品版权问题,请联系删除或授权事宜。