ffmpeg にはフィルター機能があり、動画に対してエフェクトを掛けられます。 このエントリは ffmpeg, frei0r ベースで動画の face detection を始める方のための環境構築方法について説明しています。
- 環境構築
- 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
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
frei0r-plugins-1.4/src/filter//.cpp の xml パスを修正します。
/usr/
以下は OS の制限によりファイルを設置できなくなっています(El Capitan 以降の制限)。
また brew install opencv
で入る xml ファイルが古いフォーマットのため、そのままでは動きません。差し替える必要があります。
-
最新版の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
-
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");
frei0r をビルドします。
./configure
make
make install
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