前回OpenCVのインストールまで完了したので、
Android端末がOpenCVの処理に耐えられるか、重すぎないかなどをみるために、サンプルプログラムを動かしてみる。
あまりに重すぎたり、ターゲットデバイスが対応していないなどの問題がないかを見ていく。
【環境】
Windows 7 64bit
Eclipse 4.2.1 32bit版
Android SDK r18
ターゲットデバイス:WX04K(Android 2.3.4)
【前提条件】
Androidアプリの開発環境の準備ができていること
OpenCVのインストールが完了していること
■手順1
OpenCVの動作を見るために、サンプルプログラムのプロジェクトを取り込む。
Eclipseを起動し、「File」メニューの「Import」を選択。
ウインドウが開くので、「Android」ツリーの「Existing Android Code Into Workspace」を選択して「Next」を押す。
「Browse...」ボタンを押して、OpenCVのSDKのディレクトリを選択する。
たとえば「C:\Users\xxxxx\OpenCV-2.4.5-android-sdk\samples」とか。
ディレクトリを指定するとインポートするプロジェクトが選べるようになる。
OpenCVで何ができるか見たいので、「Select All」を選択してFinish。
■手順2
取り込んだプロジェクトをビルドする。
face-detectionを動かしてみたが、起動時に落ちてしまう。。。
OpenCV Manager(共有ライブラリみたいなもの?)をインストールしようと試みているが、落ちてしまう。
この問題はあとで調べる。
代わりに「image-manipulations」をビルドしてターゲットにインストール。
■手順3
OpenCVライブラリインストールが失敗してる可能性があるので、
手動でターゲットデバイスに「OpenCV Manager」をインストールしておく。
インストールした「image-manipulations」を起動。
「カメラが既に使用されています」みたいなメッセージが出るので、ターゲットデバイスを一旦再起動。
■手順4
ターゲットデバイスを再起動して「image-manipulations」を起動。
カメラ画像にエフェクトをかけてリアルタイムに表示するサンプルのようだ。
メニューから画像加工を選ぶといろいろと楽しい。
起動直後。自分の部屋のカーテンをカメラで映している状態。
Pixelizeエフェクトを実行した状態。俗にいうモザイクってやつですね。
中央部だけモザイクかかる仕組みの様子。
あと面白そうなのはPosterize
イラスト調にエフェクトがかかって表示される。
他にもセピア調やモノクロ、ネガポジ反転、ズームなどもあった。
あとSobelもあったけど、これは輪郭抽出用フィルタかな?
他のサンプルではヒストグラム見れたりとか、いろいろ興味深い。
「face-detection」ってのもあったけど、たぶん名前のとおりの機能を備えているのでしょう。
機能としては簡単な画像処理やりたいっていう要望なら、画像処理に関する知識がなくても十分に使えるものだと思います。
少し複雑なことやるなら少しは勉強しないといけないかもだけども。
性能面では十分なものだと思う。エフェクトの種類によっては多少カクつくのもある(手元の環境ではPosterizeが一番重かった)けども、ぎりぎり許容範囲内。
リアルタイム性が必要な状況だとストレスたまるだろうけども。
というわけで、サンプルアプリ動かして「これはすごい!」と体感することができた。
アプリのアイデアとかは出てこなかったけど、いろいろ試しているうちにまた何か思い浮かぶかも。
動いていないサンプルもあるし。次はそれらを動かすことからかな?
他にどんな機能があるのか見ていきたいし。
OpenCVを使って何ができるかを知っておけば、何かの役に立つかもしれない。
何が起きるかわからないこの時代、自分が使える武器は多ければ多いほど良いと思います。