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

文/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源碼。如果覺得我的文章有意思,就順手點個贊吧。最後,感謝大家的閱讀,祝大家工作生活愉快!