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

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

file

文字添加

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

file

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

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')

file

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

file

动图制做

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

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

这样即可以完成小粒度的筛选,咱们能够将这些类似图片经过PIL库来生成gif动图。3d

def make_gif():
    gif_images=[]
    img_paths=os.listdir('gif')
    img_paths=[os.sep.join(['gif',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获取多是全网最全的杰尼龟表情包全系列完结撒花!code

相关文章
相关标签/搜索