涙目ブログ

アクセスカウンタ

zoom RSS AndroidでOpenCV 中編 OpenCV開発環境設定

<<   作成日時 : 2010/03/03 22:50   >>

ブログ気持玉 0 / トラックバック 3 / コメント 4

AndroidでOpenCVの続きです。
中編て変な響きですね。
序破急とかにすればよかったかも(T_T)


端末:HTC-magic( Google Developer Day 2009で配られた試作品。 HTC-03Aと同型)
開発環境:Eclipse Version: 3.4.2 Build id: M20090211-1700 + android-sdk-windows-r04 + android-ndk-1.6_r1
開発OS:Windows Vista sp2

命題:
1.Androidのネイティブ環境を整えよ(前編の記事)
2.OpenCVの開発環境を整えよ(中編の記事)
3.ネイティブを使ってARに挑戦せよ(後編の記事)

OpenCVの開発環境を整えよ

やることリスト
1.偉大なる先人様よりコンパイル環境を頂く
2.コンパイルして、OpenCVのスタティックリンクファイルを作成する
3.ndkへ配置する

1.偉大なる先人様よりコンパイル環境を頂く
以下に偉大なる先人様が作成されたndkのコンパイル環境があるのでダウンロードする。

http://www.noritsuna.com/archives/2009/09/opencv_ver11_fo.html
画面の下の方にある、「OpenCVForAndroidNDK-0.1-src.zip」のリンクをクリックします。


2.コンパイルして、OpenCVのスタティックリンクファイルを作成する
前回の記事通り環境を作成するか、解凍してソースとメイクファイルをndkルート/apps/ 配下に解凍してCygwinから
メイクしましょう。ソースはjniディレクトリを作成し、その配下に配置します。
結構時間がかかります。気長に待ちましょう。

終了したらndkルート/out/apps/プロジェクト名/ 配下に以下のaファイルがあることを確認します。
libcv.a
libcvaux.a
libcvhighgui.a
libcvml.a
libcxcore.a

soファイル不要です。

このままでもいいのですが、過去の資産を生かすために以下の2ファイルをリネームしました。
・libcvml.a → libml.a
・libcvhighgui.a → libhighgui.a

3.ndkへ配置する
3-1 ライブラリの配置
コンパイルで生成されたaファイルを以下のディレクトリへ配置します。

ndkルート\build\platforms\android-3\arch-arm\usr\lib
1.6のAndroidの場合はandroid-4でもいいらしいですが、未確認です。

3-2 ヘッダの配置
jni配下のソースファイルのうち、以下のヘッダファイルを配置します。

・cv/include配下のファイル全て
・cvaux/include配下のファイル全て
・cxcore/include配下のファイル全て
・ml/include配下のファイル全て
・otherlibs/highgui/のhファイル全て

 配置先
ndkルート\build\platforms\android-3\arch-arm\usr\include
1.6のAndroidの場合はandroid-4でもいいらしいですが、未確認です。

これで、AndroidでもCygwinやLinuxのようにOpenCVのコンパイル・リンクができます。
Android.mkには以下の1行を追記してください。
LOCAL_LDLIBS := -L$(SYSROOT)/usr/lib -lcxcore -lcv -lcvaux -lhighgui -lml
当然、マシンラーニングを使用しないときは、-lmlを消すなど、使用していない
ライブラリはリンクしないようにします。

また、ヘッダですが例えば、#include <cv.h>のように使えます。
Eclipseのパスおよびシンボルに、includeの配置先パスを指定すると、
IplImageなどのメンバ変数が参照できたり、とても便利になります。


OpenCVの資産がある人はガンガンAndroidで動かしましょう。
ただし、cvQueryFrameがないうえ、JavaのCamera.PreviewCallbackは使用に耐えませんが。
んっ、それって全然使えな・・・何でもありません。
それでは。

テーマ

関連テーマ 一覧


月別リンク

ブログ気持玉

クリックして気持ちを伝えよう!
ログインしてクリックすれば、自分のブログへのリンクが付きます。
→ログインへ

トラックバック(3件)

タイトル (本文) ブログ名/日時
AndroidでOpenCV 前編 ネイティブ環境設定
だいぶ前に、Androidのカメラが使えない記事を書きましたが、 それはJavaのみで、ネイティブは使っていませんでした。 いつかネイティブを試そうと思うついでに、そのネイティブとやらを使えばOpenCVも動作するとのことで、 挑戦してみます。 バグもあるし、あのインターフェイスじゃ変わりようがないとは思いますが(T_T) ...続きを見る
涙目ブログ
2010/03/03 22:55
AndroidでOpenCV 後編 ネイティブを使ってAR
AndroidでOpenCVの後編です。 やってみましたが、OpenCVどころではありません。 そもそものAndroidのカメラ制御が悪すぎて手の施しようがありません(T_T) ...続きを見る
涙目ブログ
2010/03/04 22:23
venuspoor.com
AndroidOpenCV __@OpenCVJ___ __u_O/EFu_u_O ...続きを見る
venuspoor.com
2017/01/07 02:28

トラックバック用URL help


自分のブログにトラックバック記事作成(会員用) help

タイトル
本 文

コメント(4件)

内 容 ニックネーム/日時
はじめまして。
私は、AndroidでAR系アプリの開発をしたいと思っていますが、
OpenCVの導入部分でつまづいております。

こちらのブログを参考にさせて頂いたおかげで、
ネイティブの環境は整いましたが、
「2.コンパイルして、OpenCVのスタティックリンクファイルを作成する
」の箇所でつまづいております。
できればこの部分について詳しく教えていただけないでしょうか?。

具体的には「OpenCVForAndroidNDK-0.1-src.zip」を解凍すると、
主に”apps”フォルダと”sources”フォルダができますが、
この”sources”フォルダにあるファイル全部に対してメイクを行って、
5つのaファイルを作成するということなのでしょうか?
追憶
2010/04/20 21:58
追憶さん

はじめまして、こんばんは。
このような文字だけの不親切なブログに
お付き合い頂きありがとうございます。
コメントが頂けると、とても嬉しいです。

さて、ご質問の件ですが、
ご認識の通り、「sources」内のファイル全てを
メイクするという意味です。
Linux環境でよく行う「make」→「make install」を
手動で行うのが、今回の環境構築の肝となります。

OpenCVForAndroidNDK-0.1-src.zipの中に
メイクを行う「Android.mk」も同梱なので
Cygwinからメイクすれば、5つのaファイルが生成されます。
そして、aファイルとヘッダファイルを手動でndkへコピーすれば、
Linuxぽい開発環境が構築できます。

ところで、後編を読んで頂いたかわかりませんが、
カメラプレビューからのARは、自分の持っている端末では
全く動きませんでした(T_T)
experiaなら期待が持てそうですが、ターゲットの端末は
何をお考えですか?
T-T
2010/04/21 00:21
管理人様

返事が遅くなって申し訳ありません。

あの後、Aplication.mkを正しく書き直してメイクすることで、
無事、OpenCVを導入することが出来ました。

私が作っているアプリも、onPreviewCallbackからのByte配列を取得し、
それをNativeで変換して、ビットマップとして取得するアプリです。

ただ、ユーザがボタンを押した時のみコールバックを受け取って
変換を行う処理だからか、管理人様が後編に書かれている様なエラーは今の所、起こってません。

実機では、一応、G1、HT-03A、EXPERIAで動作を確認しています。

連続して取得しようとすると、メモリーエラーになってしまうのでしょうか?
ちょっと、時間があるときに試して見たいと思ってます。

ありがとうございました。
追憶
2010/04/27 17:04
追憶様

至らないブログですが、
設定ができたようでうれしく思います。

自分の環境で連続して画像の取得を試みると、
onPreviewFrameがコールバックされる直前に
第1引数のバイト列の生成でメモリエラーが発生して、
コールバックされないという現象が起きているようです。
(エラーはDDMSのLogCatで確認しました)

ボタンを押した時に画像を取得する方式だと、
Camera#takePictureメソッドの使用ならば
正常動作を確認しております。

>実機では、一応、G1、HT-03A、EXPERIAで動作を確認しています。

潤沢な開発環境で羨ましいです。
企業か学校関係者とお見受けします。
ARもAndroidもまだまだこれからの分野ですが、
盛り上げていきたいですね。

それでは、失礼します。
T-T
2010/04/29 00:53

コメントする help

ニックネーム
本 文
AndroidでOpenCV 中編 OpenCV開発環境設定 涙目ブログ/BIGLOBEウェブリブログ
文字サイズ:       閉じる