前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用Python获取可能是全网最全的杰尼龟表情包(第三弹)

用Python获取可能是全网最全的杰尼龟表情包(第三弹)

作者头像
老肥码码码
发布2020-04-11 21:10:32
5870
发布2020-04-11 21:10:32
举报

根据前几篇文章,我们已经得到了大量包含杰尼龟的图片,接下来我们就对这些图片来做一些简单的处理,添加与图片相符的文字或是生成gif动图。

文字添加

迅哥曾经说过,没有文字的表情包是没有灵魂的。因此今天我们就用Python在图片上添加文字,先随便拿一张杰尼龟的图片。

这里我们采用PIL库来给图片的指定位置添加指定的文字,truetype函数来设置字体类型以及大小,text函数来添加指定颜色的文字。

代码语言:javascript
复制
def add_font(text):
    font=ImageFont.truetype('simhei.ttf', 70)
    img=Image.open('a.jpg')
    draw=ImageDraw.Draw(img)
    draw.text((200,400),text,font=font,fill='white')
    img.save('add_font.jpg')

这些图片配上相符的文字后,有一种画龙点睛的错觉。你可能会想,一张一张加文字,和用P图有什么区别。恰巧,去年就有一篇专门研究给表情包添加相应文字的论文,用OCR提取表情包中的文字,采用对抗生成网络训练这些去掉文字的表情包,这个网络便能够在你输入新表情包的时候能给给出与该表情相符的文字,论文传送门放在最底部。

动图制作

之前我们是从剪切的图片中获取杰尼龟的图片,是大粒度的分类,现在我们需要来做一个小粒度的分类,即按照图片的相似性,把相似的图片分为一组,从而制作成为动图(这些相似的图片本就是视频之中的连续图片)。

我们可以采用平均哈希的做法来计算图片的相似度,具体可以参考你朋友圈发的假图被我发现了!这篇文章,通过比对图片的指纹来判断相似程度,另外我们还可以采用CV2的模板匹配算法来筛选相似图片。

这样便可以完成小粒度的筛选,我们可以将这些相似图片通过PIL库来生成gif动图。

代码语言:javascript
复制
def make_gif(path):
    gif_images=[]
    img_paths=os.listdir(path)
    img_paths=[os.sep.join([path,i]) for i in img_paths]
    for path in img_paths:
        gif_images.append(imageio.imread(path))
    imageio.mimsave("a.gif",gif_images,fps=4)

至此,用Python获取可能是全网最全的杰尼龟表情包全系列完结撒花!

本系列所有代码都已经上传,想要完整代码以及表情包的旁友,在后台回复「杰尼龟」即可。

代码语言:javascript
复制
——END——

推荐阅读

用Python获取可能是全网最全的杰尼龟表情包(第一弹)

用Python获取可能是全网最全的杰尼龟表情包(第二弹)

微信重大更新!这下摸鱼就更方便了!(附内测地址)

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

本文分享自 算法与数据之美 微信公众号,前往查看

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

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

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