1. 程式人生 > >實戰 | 抖音百萬點贊:視訊的字元化

實戰 | 抖音百萬點贊:視訊的字元化

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 領取專案資料包(可直接執行)