如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)

文/IT可達鴨

圖/IT可達鴨、網絡

前言

上一篇,我們分享了給圖片轉成代碼圖片的源碼,這次分享一個視頻轉代碼動圖的一個源碼,需要有圖像和動圖像的一些基本知識。

如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)

圖片來自網絡


  • 環境配置

python版本: 3.6.0

代碼編輯工具:pycharm

錄屏軟件、控制檯(win+r, cmd)

項目所需要的環境安裝包

<code>pip install opencv-python/<code>

第一步:導入相關的python包

<code># encoding:utf-8
import cv2
import os/<code>

cv2:是一個強大的圖像、視頻處理工具包。有興趣做圖像處理或視頻處理,可以稍微研究一下openCV。

os: 這裡使用它文件存儲和清屏功能。

如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)

第二步:全局變量

<code>ascii_char = list("$@B%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~<>i!lI;:,"^`'. ")
char_len = len(ascii_char)
show_height = 40
show_width = 80/<code>

ascii_chat 是像素值轉化的代碼列表,show_height 和show_width 分別是最終轉化動圖的高和寬。 這裡為了方便演示,就把它作為全局變量。如果是實際項目,就必須用配置文件或者從數據庫中讀取。

如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)

第三步:視頻處理

<code>def frame_process(video_path):


    vc = cv2.VideoCapture(video_path)  # 加載一個視頻
    if vc.isOpened():  # 判斷是否正常打開
        rval, frame = vc.read()
    else:
        rval = False
    frame_count = 0
    outputList = []  # 初始化輸出列表
    while rval:  # 循環讀取視頻幀
        gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)  # 使用opencv轉化成灰度圖
        gray = cv2.resize(gray, (show_width, show_height))  # resize灰度圖
        text = ""
        for pixel_line in gray:
            for pixel in pixel_line:  # 字符串拼接
                text += ascii_char[int(pixel / 256 * char_len)]
            text += "\r\n"
        outputList.append(text)
        frame_count = frame_count + 1
        if frame_count % 100 == 0:
            print("已處理" + str(frame_count) + "幀")
        rval, frame = vc.read()
    print("處理完畢")
    return outputList/<code>

視頻是由一幀幀圖片組成,有些視頻每秒有24幀圖片、有些12幀圖片,幀的數量取決於視頻的質量。這裡處理步驟是:

1 加載視頻

2 循環讀取每一幀圖片

3 對圖片進行大小重置、灰度轉化、字符轉換

4 結果保存在列表中

5 返回列表結果


如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)

第四步:打印結果

<code>def output(outputList):
    for frame in outputList:
        os.system("cls")  # 清屏
        print(frame)
        print()
        print()/<code>

os.system("cls"): 表示把控制檯所有信息清空。

模擬視頻播放,一幀一幀地打印所有的圖片。


如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)

第五步:主函數

<code>if __name__ == '__main__':
    # 在命令行中,運行效果更明顯
    video_path = '跳舞.mp4'
    frame_list = frame_process(video_path)
    output(frame_list)
    print("OK")/<code>

隨意在抖音上下載一個小姐姐的跳舞視頻,作為函數的參數。

如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)


輸入輸出

打開控制檯(Win+R),輸入cmd,並進入到代碼所在目錄。運行命令: python 視頻轉代碼.py,再利用錄屏軟件錄製屏幕,導出動圖GIF。

如何把抖音小姐姐的視頻轉成代碼動圖?(附源碼)

結語

不知不覺,代碼庫又多了一塊磚。雖然代碼對於老程序員來說,這代碼 so easy, so simple。但是,對於新手而言,這就是一個非常好的練手小項目。不僅僅代碼量少,更重要的是容易上手。如果大家有疑問,歡迎下方評論。未來編程的路還很長,放下你手中的手機,跟我們一下寫代碼吧!

如果有疑問想獲取源碼,可以關注後,在後臺私信我,回覆:python代碼視頻。 我把源碼發你。持續關注"IT可達鴨" ,每天分享有趣Python源碼。如果覺得我的文章有意思,就順手點個贊吧。最後,感謝大家的閱讀,祝大家工作生活愉快!


分享到:


相關文章: