Skip to content

Instantly share code, notes, and snippets.

@uupaa
Last active February 27, 2017 07:58
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save uupaa/0d1d43747528063bab8695f403491a6e to your computer and use it in GitHub Desktop.
Save uupaa/0d1d43747528063bab8695f403491a6e to your computer and use it in GitHub Desktop.
ffmpeg, frei0r face detection in Mac

ffmpeg, frei0r face detection in Mac

ffmpeg にはフィルター機能があり、動画に対してエフェクトを掛けられます。 このエントリは ffmpeg, frei0r ベースで動画の face detection を始める方のための環境構築方法について説明しています。

Index

  1. 環境構築
  2. frei0r をビルドする
    • frei0r のソースコードをダウンロードする
    • opencv で読み込む xml のパスを修正する
    • ビルド
    • テスト

環境構築

OpenCV を brew でインストールし、インストール先のパスを確認します。

brew install homebrew/science/opencv

brew link opencv
> /usr/local/Cellar/opencv/2.4.13.2

ffmpeg を brew でインストールします。
brew install ffmpeg --with-frei0r という手っ取り早い方法もあるのですが、 このコマンドでインストールされる frei0r には facebl0r.so や fecedetect.so が添付していないため自分でビルドします。

brew install ffmpeg

1. frei0r のソースコードをダウンロードする

frei0r にはユニークなフィルタが沢山あり、その中に顔認識のフィルターが2つ(facebl0r, facedetect)があり OpenCV を使った顔認識を体験することができます。

frei0r 1.4.0 をダウンロードします。version 1.5.0 は El Capitan で ./configure できなかったため、version 1.4.0 にしています。

https://files.dyne.org/frei0r/releases/ から frei0r-plugins-1.4.0.tar.gz をダウンロードし展開します。

# download https://files.dyne.org/frei0r/releases/frei0r-plugins-1.4.0.tar.gz

cd frei0r-plugins-1.4

2. opencv で読み込む xml のパスを修正する

frei0r-plugins-1.4/src/filter//.cpp の xml パスを修正します。

/usr/ 以下は OS の制限によりファイルを設置できなくなっています(El Capitan 以降の制限)。 また brew install opencv で入る xml ファイルが古いフォーマットのため、そのままでは動きません。差し替える必要があります。

  1. 最新版のxmlを https://ja.osdn.net/projects/sfnet_magicvisionport/downloads/mvp/cascades/haarcascade_frontalface_default.xml/ からダウンロードし

    • {{OpenCV}}/share/OpenCV/haarcascades/haarcascade_frontalface_default_my.xml として設置します
    • {{OpenCV}}brew link opencv から取得します
      • /usr/local/Cellar/opencv/2.4.13.2
    • 例: /usr/local/Cellar/opencv/2.4.13.2/share/OpenCV/haarcascades/haarcascade_frontalface_default_my.xml
  2. facebl0r/facebl0r.cpp, facedetect/facedetect.cpp を直接修正し haarcascade_frontalface_default_my.xml を使うように指定します

    // facebl0r.cpp
    -   register_param("/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml",
    +   register_param("/usr/local/Cellar/opencv/2.4.13.2/share/OpenCV/haarcascades/haarcascade_frontalface_default_my.xml",
                    "Classifier",
                    "Full path to the XML pattern model for recognition; look in /usr/share/opencv/haarcascades");
    // facedetect.cpp
    -   register_param("/usr/share/opencv/haarcascades/haarcascade_frontalface_default.xml",
    +   register_param("/usr/local/Cellar/opencv/2.4.13.2/share/OpenCV/haarcascades/haarcascade_frontalface_default_my.xml",
                    "Classifier",
                    "Full path to the XML pattern model for recognition; look in /usr/share/opencv/haarcascades");

3. ビルド

frei0r をビルドします。

./configure
make
make install

4. テスト

QuickTime で開けるようにするには、 -pix_fmt yuv420p を指定します。

time ffmpeg -i a.mp4 -v debug -pix_fmt yuv420p -vf frei0r=facedetect b.mp4
> 13 sec

エラーが発生した場合はfrei0r 動作環境の確認 を参考に so を dylib にコピーして解決します。

cp /usr/local/lib/frei0r-1/facebl0r.so   /usr/local/lib/frei0r-1/facebl0r.dylib
cp /usr/local/lib/frei0r-1/facedetect.so /usr/local/lib/frei0r-1/facedetect.dylib
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment