實戰 | 抖音百萬點贊:視訊的字元化
阿新 • • 發佈:2019-01-03
1.專案介紹
在聊視訊的字元化處理之前,我們先看一下影象的字元化處理。
什麼是影象的字元化,我們可以先看一下下面的兩幅圖,原圖和字元化之後的影象:
2.pillow模組介紹
想要完成這個應用我們需要安裝一個python工具包,pillow。
安裝方式為:
pip install pillow
pillow是python中一個常用的影象處理工具包,一些pillow的基本操作如下:
# 匯入模組 from PIL import Image # 讀取檔案 img = Image.open('test.jpg') # 儲存檔案 img.save(filename,"JPEG") # 獲取圖片大小 (width,height) = img.size # 獲取圖片的源格式 img_format = img.format # 圖片模式的轉換,轉化成灰度影象 img = img.convert("L") # 獲取每個座標的畫素點的RGB值 r,g,b = img.getpixel((j,i)) # 重設圖片大小 img = img.resize(width,height)
3.影象字元化程式
把影象字元化實際上就是先把影象灰度化,把彩色圖片變為灰度圖,然後獲取到每個畫素點的數值,然後不同數值的畫素對應不同的ACSII碼字元。我封裝了一個convert函式,只要傳入圖片路徑就可以返回生成的字元化的資料,得到圖片字元化之後的資料可以儲存到文字檔案中。
# 匯入模組 from PIL import Image # 轉換函式 def convert(img): # 要索引的字元列表 ascii_char = list("[email protected]%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~ <>i!lI;:,\"^`'. ") # 字元長度 length = len(ascii_char) # 讀取影象檔案 img = Image.open(img) # 獲得圖片的寬和高 (width,height) = img.size # 對影象進行一定縮小 img = img.resize ((int(width*0.16),int(height*0.08))) # 轉為灰度影象 img = img.convert("L") txt = "" for i in range(img.size[1]): for j in range(img.size[0]): # 獲取每個座標畫素點的灰度 gray = img.getpixel((j, i)) # 獲取對應座標的字元值 unit = 256.0 / length txt += ascii_char[int(gray / unit)] txt += '\n' return txt # 傳入需要轉換的原始圖片 txt = convert('test.jpg') # 把轉換後的字元存入txt檔案 f = open("convert.txt","w") f.write(txt) f.close()
4.更進一步,視訊影象字元化
既然影象可以字元化,那麼視訊是由一幀一幀的影象組成的,自然也可以實現字元化的效果。
可以使用opencv不斷讀取一幀一幀的視訊內容,然後轉換為字串,接下來通過命令列不斷打印出轉換後得到的字串,最後再配上對應的音樂,就可以發抖音啦!
下面是我對抖音一個千萬次點贊視訊做的簡單的字元化處理,可以看下。
(微信後臺上傳視訊被壓縮,不太清晰,見諒)
抖音超火字元化視訊
專案打包
關注公眾號:X人工智慧學院
後臺回覆 :1109 領取專案資料包(可直接執行)