視頻轉字符畫

/ 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("$@B%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()

最後成功生成字符視頻。

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