[[labs.beatcraft.com]]~ [[bc9/Software/OpenEmbedded]]~ *OpenCV for bc9 [#feeb74db] **使用する version に関して [#e790f368] OpenCV2.0beta(OpenCV 1.2)は cmake が primary build system になりました。~ (autotools 用の configure.in が用意されていません。)~ cmake は version 2.6 以降でないと cross compile に対応していませんが、~ bc9-oe-sdk の cmake は version 2.4 で cross compile に対応していませんので~ cross compile を行いたい場合は自分で version 2.6 を source からビルドしてインストールしなければなりません。~ また、OpenCV 1.2 はまだ Windows 版しか動作確認ができていません。~ ~ 以上の理由により、OpenCV1.0 release(OpenCV 1.1pre1)を使用します。~ **環境変数設定 [#dac385d9] bc9 版を build するためには、bc9 用 kernel を build した時と同様 cross compile のために以下のような環境変数を設定します。 export PATH=/home/beat/gumstix/gumstix-oe/tmp/cross/bin:$PATH export ARCH=arm export CROSS_COMPILE=arm-angstrom-linux-gnueabi- bc9-oe-sdk/bc9-android-sdk の /home/beat/kernel_work/envsetup.sh を source すれば上記の設定が行えます。 **configure [#n38c7921] 以下のような config option で configure を実行します。~ ./configure --host=arm-angstrom-linux-gnueabi --build=i686-linux \ --prefix=/home/beat/temp/usr/local \ CC=/home/beat/gumstix/gumstix-oe/tmp/cross/bin/arm-angstrom-linux-gnueabi-gcc \ CXX=/home/beat/gumstix/gumstix-oe/tmp/cross/bin/arm-angstrom-linux-gnueabi-g++ \ CPPFLAGS=-I/home/beat/gumstix/gumstix-oe/tmp/staging/arm-angstrom-linux-gnueabi/include \ LDFLAGS=-L/home/beat/gumstix/gumstix-oe/tmp/staging/arm-angstrom-linux-gnueabi/lib \ **make & make install [#c3c46eb8] prefix を /home/beat/temp/usr/local としてありますので、アーカイブ作成のために~ make install で仮インストールをすると /home/beat/temp/usr/local 以下に /bin や /lib が作られインストールされます。~ 必須のものはこれだけで build されますが、bc9 上で動作を確認するため samples も build します。~ sample は仮インストール先で build しますので、まず source のある場所へ移動します。 $ cd /home/beat/temp/usr/local/share/opencv/samples/c すべての samples を一括 build するための build_all.sh がありますので、実行権を与えます。 $ chmod +x build_all.sh この script の中の gcc をすべて /home/beat/gumstix/gumstix-oe/tmp/cross/bin/arm-angstrom-linux-gnueabi-gcc に書き換えます。~ 次に以下の環境変数を設定し、pkg-config で include PATH と library PATH が見つけられるようにします。 $ export PKG_CONFIG_PATH=/home/beat/temp/usr/local/lib/pkgconfig/ ここまでの設定を終えたら build_all.sh を実行します。 $ ./build_all.sh これで samples が build されます。~ (ただし opencv 自体が gtk2.0=no で build されていますので、GUI を必要とする sample は bc9 上では動作しません。) ~ これを bc9 では /usr/local に install しますので、以下のようにインストール用アーカイブを作成します。 $ cd /home/beat/temp/ $ tar cvfz opencv_for_bc9.tgz usr できあがったインストール用アーカイブ使って bc9 実機にインストールする場合は以下の手順を実行します。~ アーカイブを bc9 にコピー~ $ scp opencv_for_bc9.tgz root@{bc9_IPADDR}:~/ bc9 に login 後アーカイブを展開します。~ root@bc9:~$ tar -C / -xzvf opencv_for_bc9.tgz 展開終了後、ldconfig を実行します。~ root@bc9:~$ ldconfig 次に libstdc++ をインストールします。~ bc9-oe-sdk の以下のディレクトリに #ref(libstdc++6_4.1.2-r10_iwmmxt.ipk) が build されていますので、それを bc9 にコピーします。 $ cd ~/gumstix/gumstix-oe/tmp/deploy/glibc/ipk/iwmmxt/ $ scp libstdc++6_4.1.2-r10_iwmmxt.ipk root@{bc9_IPADDR}~/ bc9 に login し、インストールします。 root@bc9:~$ ipkg install libstdc++6_4.1.2-r10_iwmmxt.ipk 正常にインストールが終了したら samples のうち gui を必要としないものが実行できるようになります。~ 例として letter_recog を実行すると以下のようになります。 root@bc9:~$ cd /usr/local/share/opencv/samples/c/ root@bc9:/usr/local/share/opencv/samples/c$ ./letter_recog The database ./letter-recognition.data is loaded. Training the classifier ... Recognition rate: train = 4.0%, test = 3.9% Number of trees: 100 var# importance (in %): 0 0.0 1 0.0 2 0.0 3 0.0 4 0.0 5 0.0 6 127.3 7 5.7 8 0.0 9 0.0 10 19.3 11 -5.7 12 -23.9 13 76.1 14 -92.0 15 -6.8 Proximities between some samples corresponding to the letter 'T': proximity(0,103) = 70.0% proximity(0,106) = 56.0% proximity(106,103) = 72.0% **URL [#t350b6a0] ビルド済みのインストール用アーカイブは以下のurlからダウンロードできます。~ ビルド済みのインストール用アーカイブは以下の url からダウンロードできます。~ http://sourceforge.jp/frs/redir.php?m=iij&f=%2Fbc9-dev%2F43625%2Fopencv_for_bc9_20090918.tgz