前回、MediaPipeのFace Meshを使って動画に映っている人の顔を検出するプログラムを紹介しました。

今回はFace Meshで検出される特徴点について詳しく見ていきたいと思います。簡単なMediaPipeのプログラムを作って特徴点の番号を調べてみたので、今回はそのプログラムを紹介します。
MediaPipeのFace Meshは顔を468個の特徴点(ランドマーク)として捉えるのですが、顔のどこが何番目のランドマークになっているのかを知れば、目や口の開き具合や表情の変化をプログラム内で知ることができるようになります。

準備

必要なモジュールは前回同様、OpenCVとMediaPipeです。

プログラムの内容

このプログラムは、以下にあるようなface.pngという画像を読み込んで、ランドマーク番号の下1桁の数字が0~9の場合に分けて、10個の画像として出力するプログラムです。

ソースコードはこちらからダウンロードできます。

出力結果

以下にランドマークの末尾番号(0~9)ごとにランドマークの番号を表示した画像を示します(それぞれクリックすると拡大します)。数字の左下にある〇が対応するランドマークです。

末尾0番のランドマーク
末尾1番のランドマーク
末尾2番のランドマーク
末尾3番のランドマーク
末尾4番のランドマーク
末尾5番のランドマーク
末尾6番のランドマーク
末尾7番のランドマーク
末尾8番のランドマーク
末尾9番のランドマーク

口や目の周辺はランドマークが密になっているので見えにくいところもありますが、どの点が何番目なのかは大体分かるかと思います。今回の内容が誰かのお役に立てば幸いです。

おしらせ

coconalaに出品しました。プログラム作成のご希望があればお気軽にお問い合わせください。

仕事を便利にするPythonプログラム作ります 「できたらいいな」を実現します