トップ «前の日記(2011/06/05(Sun)) 最新 次の日記(2011/06/08(Wed))»
【ソース+水=麦茶色の何か】

半期 四半期 全カテゴリ

今日の一言


2011/06/07(Tue) やべえ。会社寝過ごしそう。 [長年日記] 1:00現在 21℃

_ [Windows]ショートネームの調べ方(古いWindowsでディレクトリが指定できない等)

コマンドプロンプトで

dir /x

と打てばOK。

例えば、「Documents and Settings」は「DOCUME~1」、「Program Files」は「PROGRA~1」で指定できることが分かる。

パスの指定で空白が入って困る場合にも使えるかも。

以上!

_ [Android][GALAXY S][Windows]純正のAndroid NDKを使ってAndroid上でOpenCV2.2を動かす(OS:Windows7 64bit)

参考:

http://team-hiroq.com/blog/android/android_opencv_setup_environment2.html
http://opencv.willowgarage.com/wiki/AndroidTrunk#Windows.28native.29
http://team-hiroq.com/blog/android/android_opencv_sample2.html

調べてみると、C++に対応するように拡張したNDKを使う方法が多く見られたが、NDK version5でC++に対応したので、使わなくてもいけるかとも思って調べたところ、やはり公式NDKでもいけるようになったっぽい。

ただ、やっぱりcygwinがうっとうしい。正直、Ubuntuでやればよかったとつくづく思っている!

まあ、それはそれとして。

基本的に、OpenCVの公式wiki(http://opencv.willowgarage.com/wiki/Android?highlight=%28%28Android2.2%29%29)に書いている、「AndroidTrunk」の方法そのもの。

あと、こちら(http://team-hiroq.com/blog/)をかなり参考にさせてもらっています。

始める前に

前提として、NDKとcygwinの基本的なインストールは終わっているものとしてまとめる。

cygwinにsvnをインストール

今回、OpenCVのソースのDLにsvnを使うため、cygwinで新たにsvnをインストールする必要がある。

※多分develにあるので、選択してインストールしておく。

cmakeのインストール

※cygwinのはディレクトリの指定方法が違うらしく、流用できないので注意!

まず、こちら(http://www.cmake.org/)からcmakeのWindows用バイナリを入手。

インストーラ形式でインストールしてもいいが、zipを入手して適当なディレクトリに解凍でもOK。

makeのインストール

※cygwinのはディレクトリの指定方法が違うらしく、流用できないので注意!

続いてこちら(http://code.google.com/p/mingw-and-ndk/downloads/list)からmakeのWindows用バイナリm(ake-3.7z)を入手。7z形式なので、WinRARとかその辺りので解凍する。配置は適当でOK。

swigのインストール

※これが無くてもOpenCV自体はコンパイルできる。が、それだとサンプルがコンパイルできないので、ついでにインストールしておく。

こちら(http://www.swig.org/download.html)からswigのWindows用バイナリを入手。(現状の最新はswigwin-2.0.4.zip)

適当なディレクトリに解凍し、配置すればOK。

Antのインストール

※これが無くてもOpenCV自体はコンパイルできる。が、それだとサンプルがコンパイルできないので、ついでにインストールしておく。

こちら(http://ant.apache.org/bindownload.cgi)からswigのWindows用バイナリを入手。(現状の最新apache-ant-1.8.2-bin.zip)

これも適当なディレクトリに解凍し、配置すればOK。

OpenCVのソースを入手し、環境に合わせて修正

cygwinを起動し、

$ svn checkout https://code.ros.org/svn/opencv/trunk/opencv

と入力して、ソースを取得。

取得したソースのトップディレクトリ(opencv)の下に、「android/scripts」フォルダがあるので、それをWindowsのエクスプローラーで開く。

すると、そのディレクトリ内に『wincfg.cmd.tmpl』というファイルがあるので、これをその場でコピーし、コピーしたファイルの名前を『wincfg.cmd』に変更する。

コピーしたファイル(wincfg.cmd)を適当なテキストエディタで開き、NDK、cmake、makeのパスの設定を自分の環境に合わせて書き換える。

自分の場合、以下のようになった。

:: variables required for OpenCV build ::
:: Note: all pathes should be specified without tailing slashes!
SET ANDROID_NDK=C:\android-ndk-r5b
SET CMAKE_EXE=C:\android-cv-tools\cmake-2.8.4-win32-x86\bin\cmake.exe
SET MAKE_EXE=C:\android-cv-tools\make.exe

また、OpenCV自体のコンパイルには必要ないが、サンプルをコンパイルできるように、Swig、android sdk、ant、javaのパスも設定しておく。

自分の場合、以下のようになった。

:: variables required for android-opencv build ::
SET SWIG_DIR=C:\android-cv-tools\swigwin-2.0.4
SET ANDROID_SDK=C:\Program Files (x86)\Android\android-sdk\
SET ANT_DIR=C:\android-cv-tools\apache-ant-1.8.2
SET JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_24

OpenCVのコンパイル

コマンドプロンプトを開き、先ほどDLしたOpenCVのディレクトリ直下にあるandoridというディレクトリに移動する。

※自分の場合は、以下のようになった。

cd \opencv\android

最後に、

scripts\cmake_android.cmd

と入力し、OpenCVをコンパイル。

なお、コンパイルには非常に時間がかかるので注意すべし!(多分30分ぐらい?)

[100%]と表示されれば、コンパイル完了。

ライブラリの作成自体はこれで終了のはず。

サンプルプロジェクトのコンパイル

コマンドプロンプトを開き、opencvの下の「android\android-opencv」ディレクトリへ移動。

※自分の場合は、以下のようになった。

cd \opencv\\android\android-opencv

ここで、

cmake_android.cmd

と打つと、コンパイルが開始される。

BUILD SUCCESSFULと表示されればコンパイルは完了!

ただし!64bit版Windowsの場合、Javaが見つからずにエラーが出ることがある。

※「Program files (x86)」にインストールされている場合など。

その場合は、「Program files」にインストールしなおすか、こちら(http://stackoverflow.com/questions/3052743/android-create-call-fails-in-windows-7-missing-jdk)を参考に自力で修正してください。

※最悪、Program files (x86)のをそのままコピペすれば動く・・・はず。

ここで出来たサンプルプログラムを元に、自作のプロジェクトを作っていくことになる・・・のかな?

wiki見ながら順番通りにやってるので、正直今後これをどう使っていくのかが分かってない点が多々ある・・・。

まあ、それはそれとて!次!

サンプルプログラムのコンパイル

コマンドプロンプトを起動し、opencvの下の「android/apps/OpenCV_SAMPLE」ディレクトリに移動して、以下のコマンドを打つ。

cd /cygdrive/c/opencv/android/apps/OpenCV_SAMPLE
cmake_android.cmd

これでコンパイルができた。

後は、

C:\android-cv-tools\apache-ant-1.8.2\bin\ant debug

としてantでapkパッケージを作り、実際に端末にインストールすればおそらく実行できるはず!

この辺についてはまだ自分もよく分かっていなくて手探りの状態なので、そのうちまとめるかも!

最後のほうとかかなりぐだぐだだが、とりあえず、以上!

※自分の環境では、GALAXY Sできちんと動きました。