MediaPipeとOpenCVで指先から炎エフェクトを出してみる
SNOWのハロウィンスタンプでこんなものを見つけました。
指先からロウソクの炎がゆらゆら......面白いですね!
ということで自分も作ってみました。
MediaPipe Hands + OpenCVでSNOWの「指から炎」スタンプ的なものを作ってみた pic.twitter.com/syUrARcJaY
— marica (@tama_Ud) October 28, 2020
いかにも合成!って感じですけど、炎の魔道士っぽいエフェクトができました!
実装
1. ファイルを作る
今回はdesktop版のmulti_hand_trackingで作りました。
mediapipe/example/desktop/multi_hand_tracking 直下に新しく.ccファイルを作成します。
また、炎画像の素材を用意します。
自分はUnityの無料アセットから炎エフェクトのtiffを見つけて、
透過pngに切り出して保存し、連番ファイル名を付けました。
2. MediaPipeで指先認識 + OpenCVで炎画像を貼り付ける
全実装は以下。
MediaPipe + OpenCVで指先から炎エフェクトを出す
内容をかいつまんで説明すると、
getCurrentFireImage() で炎画像 (今回は50枚用意しました) を一枚ずつ取り出して、lightFire() 内で指先を判定して1フレームごとに貼り付けています。
実行して上記のデモのように動けば成功です。
おもちゃレベルですが、簡単に実装できますし、遊んでみると結構楽しいものですね。