1. 程式人生 > >Python生成抖音字符視頻,技術流!

Python生成抖音字符視頻,技術流!

交流 學習 根據 存儲 學習者 超時 () don 人工智能

抖音字符視頻在去年火過一段時間。

反正我是始終忘不了那段極樂凈土的音樂...

這一次自己也來實現一波,做一個字符視頻出來。

主要用到的庫有cv2,pillow庫。

原視頻,直接抖音下載的,妥妥的水印。

技術分享圖片

/ 01 / 視頻轉圖片

在Pycharm上直接安裝cv2庫是成功不了的,具體什麽原因我也不清楚。

經過我的實踐,發現只需在Pycharm的虛擬環境下。

運行下面這個命令,即可成功安裝cv2這個庫。

pip3?install?opencv-python

不過還是會出現下載速度過慢,導致超時。

如果實在不行就可以去官網,下個.whl格式來安裝。

視頻轉圖片代碼如下。

import?cv2
import?os

#?在當前目錄下新建文件夾
folder_path?=?"img_bear/"
os.makedirs(folder_path)
#?進行視頻的載入
vc?=?cv2.VideoCapture(‘bear.mp4‘)
c?=?0
#?判斷載入的視頻是否可以打開
ret?=?vc.isOpened()
#?循環讀取視頻幀
while?ret:
????c?=?c?+?1
????#?進行單張圖片的讀取,ret的值為True或者Flase,frame表示讀入的圖片
????ret,?frame?=?vc.read()
????if?ret:
????????#?存儲為圖像
????????cv2.imwrite(‘img_bear/‘+str(c)?+?‘.jpg‘,?frame)
????????#?輸出圖像名稱
????????print(‘img_bear/‘+str(c)?+?‘.jpg‘)
????????#?在一個給定的時間內(單位ms)等待用戶按鍵觸發,1ms
????????cv2.waitKey(1)
????else:
????????break
#?視頻釋放
vc.release()

最後成功生成了369張圖片。

技術分享圖片

呆萌呆萌的××熊,我是不知道什麽品種的熊...

/ 02 / 圖片轉字符

普通圖片轉字符圖片主要使用了pillow庫。

對圖片做灰度處理,然後根據圖片像素點的灰度值,添加對應的字符。

具體代碼如下。


from?PIL?import?Image,?ImageDraw,?ImageFont
import?numpy?as?np
import?os

#?創建字符圖片文件夾
folder_path?=?"bear/"
os.makedirs(folder_path)
for?i?in?range(1,?1000):
????filename?=?‘img_bear/‘?+?str(i)?+?‘.jpg‘
????#?字符列表
????ascii_char?=?list("[email protected]%8&WM#*oahkbdpqwmZO0QLCJUYXzcvunxrjft/\|()1{}[]?-_+~????????????<>i!lI;:,\"^`‘.?")
????#?判斷圖片是否存在
????if?os.path.exists(filename):
????????#?將圖片轉化為灰度圖像,並重設大小
????????img_array?=?np.array(Image.open(filename).resize((70,?70),?Image.ANTIALIAS).convert(‘L‘))
????????#?創建新的圖片對象
????????img?=?Image.new(‘L‘,?(560,?560),?255)
????????draw_object?=?ImageDraw.Draw(img)
????????#?設置字體
????????font?=?ImageFont.truetype(‘consola.ttf‘,?10,?encoding=‘unic‘)
????????#?根據灰度值添加對應的字符
????????for?j?in?range(70):
????????????for?k?in?range(70):
????????????????x,?y?=?k?*?8,?j?*?8
????????????????index?=?int(img_array[j][k]?/?4)
????????????????draw_object.text((x,?y),?ascii_char[index],?font=font,?fill=0)
????????name?=?‘bear/‘?+?str(i)?+?‘.jpg‘
????????print(name)
????????#?保存字符圖片
????????img.save(name,?‘JPEG‘)

最後成功生成了字符圖片。

技術分享圖片

和上面的原圖一樣,也是369張。

/ 03 / 字符轉視頻

接下來使用cv2庫,將字符圖片轉化為視頻。

具體代碼如下。


import?cv2
import?os

#?設置視頻編碼器,這裏使用使用MJPG編碼器
fourcc?=?cv2.VideoWriter_fourcc(*‘MJPG‘)
#?輸出視頻參數設置,包含視頻文件名、編碼器、幀率、視頻寬高(此處參數需和字符圖片大小一致)
videoWriter?=?cv2.VideoWriter(‘bear_character.avi‘,?fourcc,?20.0,?(560,?560))

for?i?in?range(1,?1000):
????filename?=?‘bear/‘+str(i)+‘.jpg‘
????#?判斷圖片是否存在
????if?os.path.exists(filename):
????????img?=?cv2.imread(filename=filename)
????????#?在一個給定的時間內(單位ms)等待用戶按鍵觸發,100ms
????????cv2.waitKey(100)
????????#?將圖片寫入視頻中
????????videoWriter.write(img)
????????print(str(i)?+?‘.jpg‘?+?‘?done!‘)
#?視頻釋放
videoWriter.release()

最後成功生成字符視頻,這裏放個圖

技術分享圖片

如果你依然在編程的世界裏迷茫,不知道自己的未來規劃,可以加入我們的Python學習扣qun:784758214,看看前輩們是如何學習的!交流經驗!
自己是一名高級python開發工程師,從基礎的python腳本到web開發、爬蟲、django、人工智能、數據挖掘等,零基礎到項目實戰的資料都有整理。
送給每一位python的小夥伴!分享一些學習的方法和需要註意的小細節,這裏是python學習者聚集地

點擊:python技術分享

Python生成抖音字符視頻,技術流!