はじめに
OpenCVの顔認識をAndroidで動作させるには、AndroidでOpenCV 3.2を使って顔検出をするを真似れば良かった。特に記事にする必要もないように思ったけれど、ここでは、Android Studioのバージョンが上がったためか修正が必要な部分があったので、若干補足を記載。
動作確認環境
- OpenCV, version 3.4.2
- Android Studio 3.1.3
- Build #AI-173.4819257, built on June 5, 2018
- JRE: 1.8.0_152-release-1024-b01 x86_64
- JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
- macOS High Sierra, version.10.13.6
- Moto G5 Plus, Android 7.0
修正箇所
https://blogs.osdn.jp/2017/02/10/opencv.html
からの修正箇所。
- Target API Version, Min API Version, Compile API Versionを API 24 (Android 7.0)に揃えた。
- AndroidManifest.xmlから
android:roundIcon="@mipmap/ic_launcher_round"
を削除。roundIconはAPI Level 25 (Android 7.1)以降でのみ対応しているらしい。 - /main/res/layout/activity_main.xml に android:id="@+id/activity_main" を追加。
- CameraView.java のsurfaceCreated()に
params.setFocusMode(Camera.Parameters.FOCUS_MODE_CONTINUOUS_PICTURE);
を追加。無限遠でしかピントが合わなかったのでAutoFocusを有効にした。追加しないと無限遠にフォーカスした状態で動作した。
まとめ
Moto G5 Plus(Android 7.0)でOpenCV3.4.2のhaarcascade_frontalface_alt.xmlを使った顔認識が動作した。