實戰 | 抖音百萬點贊:視頻的字符化

1.項目介紹

在聊視頻的字符化處理之前,我們先看一下圖像的字符化處理。

什麼是圖像的字符化,我們可以先看一下下面的兩幅圖,原圖和字符化之後的圖像:
原始圖片中的像素變成了用ASCII碼組成的圖像

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("$@B%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不斷讀取一幀一幀的視頻內容,然後轉換爲字符串,接下來通過命令行不斷打印出轉換後得到的字符串,最後再配上對應的音樂,就可以發抖音啦!

下面是我對抖音一個千萬次點贊視頻做的簡單的字符化處理,可以看下。

(微信後臺上傳視頻被壓縮,不太清晰,見諒)
抖音超火字符化視頻

項目打包

圖像字符化項目
https://pan.baidu.com/s/1nbtk9Nru_o625ajkOGWgag
提取碼:f5e9

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