根據前幾篇文章,咱們已經獲得了大量包含傑尼龜的圖片,接下來咱們就對這些圖片來作一些簡單的處理,添加與圖片相符的文字或是生成gif動圖。算法
迅哥曾經說過,沒有文字的表情包是沒有靈魂的。所以今天咱們就用Python在圖片上添加文字,先隨便拿一張傑尼龜的圖片。網絡
這裏咱們採用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')
這些圖片配上相符的文字後,有一種畫龍點睛的錯覺。你可能會想,一張一張加文字,和用P圖有什麼區別。恰巧,去年就有一篇專門研究給表情包添加相應文字的論文,用OCR提取表情包中的文字,採用對抗生成網絡訓練這些去掉文字的表情包,這個網絡便可以在你輸入新表情包的時候能給給出與該表情相符的文字,論文傳送門放在最底部。函數
以前咱們是從剪切的圖片中獲取傑尼龜的圖片,是大粒度的分類,如今咱們須要來作一個小粒度的分類,即按照圖片的類似性,把類似的圖片分爲一組,從而製做成爲動圖(這些類似的圖片本就是視頻之中的連續圖片)。字體
咱們能夠採用平均哈希的作法來計算圖片的類似度,具體能夠參考你朋友圈發的假圖被我發現了!這篇文章,經過比對圖片的指紋來判斷類似程度,另外咱們還能夠採用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