OpenCV 2.3.1 for Android がいい感じ
OpenCV 2.3.1 for Androidで大幅に更新があってかなり使いやすくなったので、だれとなく知ってもらいたくて記事うp
2.3.1になってJava APIが整い、サンプルコードも更新されて、だいぶすっきりしています。
(2.2のサンプルコードは死ぬほどめんどくさいことになってて、正直ひどかった)
これまではNDKで画処理できる程度で
Java-C間をやりとりするのがめんどくさかったり
処理結果をCからJavaへ渡したはいいけど、UIに渡すのにどうすりゃいいの
てな感じでしたがそこらへんがOpenCV2.3.1 for Androidですっきりと解決されています。
OpenCV for Android公式ページ
http://opencv.willowgarage.com/wiki/Android
http://opencv.willowgarage.com/wiki/AndroidPrebuiltOpenCV231
OpenCV 2.3.1 for Androidでできること
簡単な画像処理であればサクッとJava APIで済ませ(図 左側ルートでOpenCVライブラリへアクセス)
まとまった処理はCでガリガリと書いてやることができます(図 右側ルートでOpenCVライブラリへアクセス)
表示系に引き渡すときはMatからBitmapへ変換(MatToBitmap)してSurfaceViewで表示させます。
OpenCV 2.3.1 からprebuildパッケージで配布されるようになったので
サンプルコードの実行まで簡単に試せるようになっています。
以下はLinux環境でサンプルコードを実行するまでの流れです。
(確認環境はUbuntu 10.10 64bit)
1.OpenCVダウンロードと解凍
http://sourceforge.net/projects/opencvlibrary/files/opencv-android/2.3/
にある
OpenCV-2.3.1-beta1-android-bin.tar.bz2
をダウンロードして展開。
2.OpenCVサンプルコード実行
カメラ機能のついた端末へデバッグモードで繋いだ状態で
eclipseでOpenCVのプロジェクトを開きます。
sampleディレクトリ内のプロジェクトを開きます。
実行。
これだけ。
ただし、tutorial-3-nativeとtutorial-4-mixedだけはndkを使っているので
eclipseで実行する前にndk-buildしてやる必要があります。
$ cd tutorial-3-native
$ ndk-build
sampleディレクトリ内には以下のようなデモと段階的なチュートリアルがあります。
デモ
- 15-puzzle
- 画面を16分割してパズルにするデモ
- face-detection
- 顔認識デモ
- image-manipulations
- Canny, Sepia, Sobel, Blur, Zoomのデモ
画像はimage-manipulationsのデモ。画面中央のみCannyが効いてる。
- tutorial-0-androidcamera
- OpenCVを使わないAndroidプログラム
- tutorial-1-addopencv
- OpenCV Java APIの使用方法:Cannyを追加
- tutorial-2-opencvcamera
- NativeCameraの使用方法:VideoCaptureでカメラキャプチャ
- tutorial-3-native
- NDKプログラミングする方法:NDKで特徴点検出を追加
- tutorial-4-mixed
- まとめ:NDKとOpenCV Java APIを連携させて使用
参考:
OpenCV 2 Computer Vision Application Programming Cookbook: Over 50 Recipes to Master This Library of Programming Functions for Real-time Computer Vision [ペーパーバック]
サンプルコードが直感的でわかりやすい。もやもやしてたところがスッキリ。