今回は乃木坂時々クロちゃんということで
TikTokの動画っぽいアレを作ってみることとしました。
解説動画はこちら
さて
今回はTikTok動画のアレみたいなやつを
作ってみようと思います。
アレとは 人の顔から次の人の顔に移り変わるやつの事で 一般的にはFaceMorphingと言うらしい?!です。
それを可能にするコードが
githubに有りましたので
それを参考にさせていただきます。
参考:face-morphing
このコード類を利用するには
少し沢山のインストールが必要で
特にopencvやdlibなどが必要です。
動かしたい方はgithubのRequirementsを
うまく満たすようにライブラリ群を揃えて下さい。
それではコードの方を見てみましょう。
JupyterNotebookで動かせるように
githubからファイルをダウンロードして
Notebookのディレクトリに配下に置きました。
まずはライブラリ群のインポートから
from morphing.face_landmark_detection import makeCorrespondence from morphing.delaunay import makeDelaunay from morphing.faceMorph import makeMorphs import subprocess import argparse import shutil import os def doMorphing(thePredictor,theImage1,theImage2,theDuration,theFrameRate,theResult): [size,img1,img2,list1,list2,list3]=makeCorrespondence(thePredictor,theImage1,theImage2) if(size[0]==0): print("Sorry, but I couldn't find a face in the image "+size[1]) return list4=makeDelaunay(size[1],size[0],list3) makeMorphs(theDuration,theFrameRate,img1,img2,list1,list2,list4,size,theResult)これがうまく実行できていたら
動くだろうと思います。
実行部分はこれです。
# ランドマークファイルの場所 dat_path = 'shape_predictor_68_face_landmarks.datファイルのパス' # 画像の指定 img1 = '画像のパス' img2 = '画像のパス'2枚の画像と出力先を指定します。
# 1秒あたりの画像枚数 dur = 5 # 動画の枚数 fr = 25 res = 'mp4ファイルの出力パス' doMorphing(dat_path,img1,img2,dur,fr,res)
1秒あたりの枚数と、全体の枚数も指定します。
多くすればよりスムーズになると思います。
出来上がりの確認は・・・
JupyterNotebook上では
%%HTML
を使うとHTMLを使用することができます。
%%HTML <video width="動画サイズ" height="動画サイズ"> <source src="xxx.mp4" type="mp4のパス"> </video>
さて出来上がりを見てみましょう。
githubに有ったサンプル画像だとこうなります。
こいつの仕組みとしては
画像と画像の中間画像を作っていって
それを動画化しているようです。
中間画像はこんな感じです。
なかなか面白いですよね!!!
次に乃木坂46さんでやってみました。
いやー
ほんと素晴らしいですね!!!!!
クロちゃんも混ぜてみたくなったので
混ぜるとこうなります。
うーーん
パンパンですね!!!!!
お口直しに
現在の乃木坂46全員分で
FaceMorphingしてますんで
見てやって下さい。
それでは。