MediaPipeとOpenCVで指先から炎エフェクトを出してみる

SNOWのハロウィンスタンプでこんなものを見つけました。

指先からロウソクの炎がゆらゆら......面白いですね!

ということで自分も作ってみました。



いかにも合成!って感じですけど、炎の魔道士っぽいエフェクトができました!

実装

0. 環境

macOS Catalina
OpenCV 4.x.x

1. ファイルを作る

今回はdesktop版のmulti_hand_trackingで作りました。
mediapipe/example/desktop/multi_hand_tracking 直下に新しく.ccファイルを作成します。

また、炎画像の素材を用意します。
自分はUnityの無料アセットから炎エフェクトのtiffを見つけて、
透過pngに切り出して保存し、連番ファイル名を付けました。



2. MediaPipeで指先認識 + OpenCVで炎画像を貼り付ける

全実装は以下。



MediaPipe + OpenCVで指先から炎エフェクトを出す


内容をかいつまんで説明すると、
getCurrentFireImage() で炎画像 (今回は50枚用意しました) を一枚ずつ取り出して、lightFire() 内で指先を判定して1フレームごとに貼り付けています。

実行して上記のデモのように動けば成功です。
おもちゃレベルですが、簡単に実装できますし、遊んでみると結構楽しいものですね。