Pythonを使用してDouyinキャラクタービデオを生成してください!

TikTokのキャラクタービデオは昨年しばらくの間人気がありました。

とにかく、純粋な至福の地の音楽を忘れることはできません...

今回も自分でウェーブを実装してキャラクタービデオを作ります。

使用される主なライブラリは、cv2およびpillowライブラリです。

元のビデオは次のとおりで、Douyinから直接ダウンロードされ、適切な透かしが付いています。

ただし、この操作には影響しません。

/ 01 /ビデオから画像へ

cv2ライブラリをPycharmに直接インストールすることはできません。理由はわかりません。

練習した後、Pycharmの仮想環境にあるだけでよいことがわかりました。

次のコマンドを実行して、cv2ライブラリを正常にインストールします。

pip3 install opencv-python

ただし、ダウンロード速度がまだ遅すぎるため、タイムアウトが発生します。

それが機能しない場合は、公式Webサイトにアクセスして、次の.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
 # 1枚の写真を読む,retの値はTrueまたはFlaseです,フレームは読み取られた画像を表します
 ret, frame = vc.read()if ret:
  # 画像として保存
  cv2.imwrite('img_bear/'+str(c)+'.jpg', frame)
  # 出力画像名
  print('img_bear/'+str(c)+'.jpg')
  # 与えられた時間に(単位ミリ秒)ユーザーがキーを押してトリガーするのを待ちます,1ms
  cv2.waitKey(1)else:break
# ビデオリリース
vc.release()

最終的に、369枚の画像が正常に生成されました。

キュートでキュートな××クマ、どんなクマなのかわからない…

/ 02 /絵からキャラクターへ

通常の絵からキャラクターへの絵は主に枕ライブラリを使用します。

画像にグレースケール処理を実行し、画像ピクセルのグレースケール値に従って対応する文字を追加します。

具体的なコードは次のとおりです。

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

# キャラクター画像フォルダを作成する
folder_path ="bear/"
os.makedirs(folder_path)for i inrange(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 inrange(70):for k inrange(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 inrange(1,1000):
 filename ='bear/'+str(i)+'.jpg'
 # 写真が存在するかどうかを確認します
 if os.path.exists(filename):
  img = cv2.imread(filename=filename)
  # 与えられた時間に(単位ミリ秒)ユーザーがキーを押してトリガーするのを待ちます,100ms
  cv2.waitKey(100)
  # ビデオに写真を書く
  videoWriter.write(img)print(str(i)+'.jpg'+' done!')
# ビデオリリース
videoWriter.release()

最後に、キャラクタービデオが正常に生成されます。

ここに元のBGMを追加するのは面倒なので、それで済ませてください。

目を細める方が良いと言われています。

Recommended Posts

Pythonを使用してDouyinキャラクタービデオを生成してください!
パイソンタプルの使い方
pythonスレッドプールの使用方法
pythonを使用して段階的な回帰を実現します
Pythonはpdfkitを使用してpdfを生成します[python]
PythonでSQLiteを使用する方法
Pythonを使用して飛行機の戦争ゲームを作成する
PYTHONを使用してニュース記事をクロールする方法
Python初心者はライブラリの使い方を学びます
Pythonを使用して画像をすばやく切り取る
python3を使用してubuntuに3番目をインストールします
pythonでround関数を使用する方法
Pythonでzip関数を使用する方法
01.Pythonの概要
pythonでformat関数を使用する方法
doxygenを使用して、Ubuntu12.04でAPIドキュメントを生成します
pythonでアシスタントを実行するコードを使用する方法
Pythonクローラー-美しいスープの使用
pythonを使用して名刺管理システムを実現する
Pythonの紹介
パイソンを使って航空機戦争ゲームを実現する
Centos 6.4 python2.6を2.7にアップグレード
Centos 6.4 python2.6を2.7にアップグレード