2014年9月28日日曜日

Android向けOpenCVの開発環境設定

MacOSXにAndroidの開発環境を用意し、OpenCVをインストールしようとしたら引っかかったのでメモ。

用意するもの

まず、必要なのは以下らしい。
  1. Androidの開発環境
  2. Android NDK
  3. OpenCV for Android
また注意点として、OpenCVを使ったアプリは「OpenCV Manager」(OpenCV For Androidに同梱、Play Storeでも配ってる)を入れとかないと動かないらしい。

ndk-buid not found in PATH

公式サイトや他の先駆者のサイトを見つつOpenCVのSDKを読み込み、さっそくサンプルをビルドしてみた結果がコレ。
エラーの内容はこんな感じ
どうやらAndroid NDKとやらが参照できないらしい。
そこでやるべきこと。
  1. Android NDKをダウンロードしてきて適当なフォルダ(決して絶対パスに空白があってはいけない)に置く(例:/opt/ndk)
  2. ビルドエラーが出ているプロジェクトのプロパティを見てみる
  3. C/C++ Build → Builder → Build Commandを「$(NDKROOT)/ndk-build」にする。(.cmdを消す)
  4. Eclipseの環境設定でAndroid → NDK → NDK LocationをNDKを置いたパスにする。(例:/opt/ndk)

大抵のサイトはここで終わってたが、ここで問題発生、「/ndk-buidが見つからない」と怒られる。 なんでだ!NDK Location設定したじゃん!

しかたがないのでエラーメッセージに出ている「PATH」か、もしくはBuild Commandで指定してある「NDKROOT」という環境変数にどうにか「/opt/ndk」を追加しないといけないらしい。というわけでターミナルで以下を実行する。

% launchctl setenv NDKROOT /opt/ndk
% launchctl getenv NDKROOT 
/opt/ndk
気をつけないといけないのが、~/.tcshrcや~/.bash_profileに書いても意味ないってこと。うん、こいつらが有効になるのはターミナル内だけだからね。
なので上記のコマンドでlaunchdが使用する環境変数を追加するといいらしい。

OpenCV Managerをエミュレータにインストール

実機ならばPlay Storeがでいいのだけれど、エミュレータだと無理なので手動インストールするらしい。というわけで手順メモ。
  1. Windows → Android Virtual Device ManagerでエミュレータのCPUを調べる(以下の場合はarmabi-v7a)
  2. エミュレータを起動してホーム画面にする
  3. このサイトでCPUにあったマネージャを調べる。どうやら「OpenCV_2.4.5_Manager_2.7_armv7a-neon.apk」らしい。
  4. ターミナルからadbコマンドを使ってインストールする
  5. % <Android SDK path>/platform-tools/adb install <OpenCV4Android SDK path>/apk/OpenCV_2.4.5_Manager_2.7_armv7a-neon.apk
    % <Android SDK path>/platform-tools/adb install <OpenCV4Android SDK path>/apk/OpenCV_2.4.5_Manager_2.7_binary_pack_armv7a.apk
    
  6. エミュレータにOpenCV ManagerアプリがインストールされてればOK
よっしゃーっつ!さっそくサンプルプログラムを実行だっ!









カメラから画像とれねぇ(TдT)

0 comments:

コメントを投稿