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("$@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