用Python獲取可能是全網最全的傑尼龜表情包(第一彈)

傑尼龜系列表情包在廣大網友之間傳遞快樂,紅極一時。我想是傑尼龜可愛的外表以及憨憨的形態,圓圓的臉蛋大大的眼睛,且其經常在劇中擺出各式誇張表情,因而被廣大網友製成各式各樣的表情包,並且深受沙雕網友的喜愛。

file

正好,我也是這沙雕網友大軍中的一員,通過各種渠道收集了一些傑尼龜的表情包。但,我想要更多,只有擁有沙雕表情包最多的人才能在鬥圖中立於不敗之地,於是便有了用Python獲取可能是全網最全的傑尼龜表情包這一系列。本系列旨在獲取更多更多的傑尼龜表情包,傳遞更多歡樂。!

全系列一共三彈,每一彈都運用Python作爲編程語言,主要涉及網絡爬蟲、數據圖像處理以及機器學習這幾個應用領域,今天便是這第一彈!

file

爬取視頻

如何獲得更多的傑尼龜表情包?

這些流傳的表情包無非就是截取自動畫片《精靈寶可夢》,然後有選擇性地縮放或是剪切圖片,再對應圖片加上相關的文字。因此按照這個邏輯,我們需要首先在這視頻上做文章。

作爲第一代御三家的一員,傑尼龜主要活躍在《精靈寶可夢》的第一部無印篇,因而我們僅需要考慮第一部的視頻,而這第一部中,不乏一些傑尼龜專集。

直接下載這第一部的視頻費時費力,恰好B站有up主上傳了所有含傑尼龜的集數合集,這裏偷個小懶,我直接採用了@Henryhaohao寫得非常棒的B站視頻爬蟲將該專輯合集的所有視頻下載到本地。

file

視頻切割

既然已經將所有視頻下載,接下來便可以利用openCV將每個視頻切割爲圖片。這裏fps便是幀率,意爲每一秒刷新的圖片數量,frames則是一整段視頻中總的圖片數量。

def vedio_to_pic(path):

    vedio_path=os.listdir(path)
    count=0
    for vedio in vedio_path: 
        videoCapture=cv2.VideoCapture()
        videoCapture.open(os.path.join(path,vedio,vedio+'.flv'))
        fps=videoCapture.get(cv2.CAP_PROP_FPS)
        frames = videoCapture.get(cv2.CAP_PROP_FRAME_COUNT)       
        print("fps=",fps,"frames=",frames)
        for i in range(int(frames)):
            ret,frame=videoCapture.read()
            if ret:
                if i%int(fps/5)==0:        
                    cv2.imwrite("pic/jieni{}_{}.jpg".format(count+1,i),frame)
        count+=1

這裏每一幀僅保存1/5的圖片,因爲每一幀內的圖片較爲相似,幀內所有圖片獲取存在較大的冗餘。

file

至此,我們便擁有了海量可能包含傑尼龜的圖片,下一彈便來講講如何使用機器學習來幫助我們篩選那些包含傑尼龜的圖片!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章