Python生成抖音字符視頻,技術流!
阿新 • • 發佈:2019-04-28
交流 學習 根據 存儲 學習者 超時 () 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生成抖音字符視頻,技術流!