前回のOpenCVに引き続き旧ブログからの引っ越し
元記事はこちら⇒BeagleBoard+ubuntu+OpenCV[追記あり]
*******************以下転載*******************
[2011.5.25 追記あり]
記述に少し誤りがありましたので訂正・加筆があります。
後半のOpenCVのインストールのcmakeのところです。
読み進めていけばわかります。
ひーーーーーーーーーーーーーーーさしぶりの更新
もうダメぽ
ってなことで最近の研究成果をば
顔検出システムbeagleboardを使って実験することにした。
消費電力削減のためにね。
BeagleBoardっていうのはARMプロセッサの載ったボードです。
http://beagleboard.org/
今現在最新版はBeagleBoard-xmだけど自分の使ったのはRev.C4だった。
xmのほうが高性能です。
今から買うんだったらxmがいいかも。
自分のシステムはOpenCVのhaar-like検出を使ってるからOpenCVを入れる必要がる。
BeagleBoardに入れるOS最初は資料の多いAndroidがいいかなって思ってインストールしたけど、重いしこれにOpenCV入れてもまともにできそうに思えなかったからUbuntuを入れなおした。
数日したら忘れそうだから備忘録代わりに手順を書いておく。
今回はUbuntuのインストール時間短縮のためにDemoイメージ使ったけどそのうちカスタマイズして入れなおそうかなと思う。
まずは環境の準備
今回はメインPCもUbuntuを使って進めていった。
BeagleBoardは基本SDカードにOSを入れるから4G位のものを用意しておく。
でカードリーダでPCに接続
http://elinux.org/BeagleBoardUbuntu
のページからDemoイメージを落とす。
2011年1月現在Maverick(10.10)とLucid(10.04)があるけどたぶんどっちも大して変わんないと思う。
今回はLucid使ってみた。だけど説明ではMarverick前提で書いてみるw
基本上の英語サイトに書いてあることそのままだけど一応あんまり日本語資料ないからここに書いておく。
適当なところにディレクトリを作る(今回は~/ubuntu)
mkdir ~/ubuntu
次に~/ubuntuに必要なファイルをダウンロード
cd ~/ubuntu wget http://rcn-ee.net/deb/rootfs/maverick/ubuntu-10.10-r3-minimal-armel.tar.7z
もしダウンロードできなかったら下記のミラーからダウンロード
wget http://ynezz.ibawizard.net/beagleboard/maverick/ubuntu-10.10-r3-minimal-armel.tar.7z wget http://vivaphp.net/beagle/maverick/ubuntu-10.10-r3-minimal-armel.tar.7z
ダウンロードファイルの検証?(verifyって書いてるけどぶっちゃけあんまり意味わかりません)
たぶん2行目の16進数列と同じのが出てきたらファイルが正常だと思う。
md5sum ubuntu-10.10-r3-minimal-armel.tar.7z 624f5565ef1772baef423f106f2aff15 ubuntu-10.10-r3-minimal-armel.tar.7z
ファイルの解凍
7za x ubuntu-10.10-r3-minimal-armel.tar.7z tar xf ubuntu-10.10-r3-minimal-armel.tar cd ubuntu-10.10-r3-minimal-armel
なんかnon-english?の修正をしなければいけないみたい
sdcard.shを置き換える
rm setup_sdcard.sh wget http://rcn-ee.homeip.net:81/dl/updates/omap-image-builder/tools/setup_sdcard.sh chmod a+x setup_sdcard.sh
SDカードにインストール
sudo ./setup_sdcard.sh --mmc /dev/sdX --uboot beagle --rootfs ext3 --swap_file 50
/dev/sdXは自分の環境でSDカードがある場所に書き換えて
オプションの意味は–mmcがSDの場所、–ubootは書いてないけどたぶんubootがあるパーティションの名前、rootfsはファイルを置いている場所のパーティションのフォーマット、swap_fileはスワップの領域の大きさ
元の情報じゃrootfsとswapのオプションはついてなかった。
デフォルトじゃrootfsはext4らしいんだけど、ほかの資料じゃext3が多かったのとBeagleBoardがデフォルトでbootするのがext3みたいだったから書き換えた。
swapは適当に大きさを決めた。50MBもあれば大丈夫と思う。
実行が完了するとパーティションの分割からファイルの移動まで出来上がってると思う。
あとはBeagleBoardにカードを移して起動すればUbuntuが起動するはず。
この時BeagleBoardはシリアル通信で動くはずだからPCとRS-232C端子でクロスケーブルでつないでね。
シリアル端子ない場合はUSBシリアル変換でも探して。
ボーレートは115200です。
一応HDMIも画面につないで、USBキーボード接続しておきましょう。
正常に起動できればログイン画面が出てくるはず(うろ覚え)
多分ID:ubuntu pass:temppassで通るはず
もしかしたら自分でID登録するほうが最初だったかも。
とりあえず起動したらシリアル経由で使えるはず。
そのあとモニタのほうに設定画面でるかもしれない。
もし出た場合は地域とか自分のモニタとか選択できる画面になるから適当なものを選んでいって。
これでOSのインストールは一通り完了したと思うから次はアップデート
だけその前にネットワーク設定
USBイーサネットアダプタが必要だから準備して。
それをBeagleBoardにつないでルータに接続したら以下のコマンドを打つ。
sudo ifconfig -a sudo dhclient usb1(もしくはeth0、どっちかは忘れた)
適当にpingでも打ってネットワークに接続できたことを確認したら
sudo apt-get update
でアップデート
終わったらGUIのインストール
sudo apt-get install xfce4 gdm xubuntu-gdm-theme xubuntu-artwork xserver-xorg-video-omap3
全部インストールできたらとりあえず再起動してみる。
もし画面のほうにGUIが出たら成功
もしコンソールのほうにでたら
sudo startxfce4
ってすればGUI起動するはず。
因みに自分の環境じゃなぜかGUIで文字化けが発生した。理由は不明
ここまで完成したら基本PCと同じようには使えるはず。
あとはOpenCVのインストールをする。
OpenCVはapt-getでlib-cv.devをインストールすれば使えるけどバージョンが1.0だから古い。
今回2.1を使いたかったから自分でビルドした。
インストール法は以下の通り
まず必要なパッケージを導入
今回必要なのはcmake,libgtk2.0-dev,libpng-dev,libjpeg-dev,libavformat-dev,libswscale-dev
まず初期のリポジトリだけじゃ全部導入できないかもしれないからリポジトリの追加
viあたりでリポジトリ書いてるファイルを開く
sudo vi /etc/apt/source.list
sudoしないと書き換えできないと思う。
以下のテキストを追加
deb http://jp.archive.ubuntu.com/ports/ jaunty main restricted universe multiverse deb-src http://jp.archive.ubuntu.com/ubuntu/ jaunty main restricted universe multiverse deb http://jp.archive.ubuntu.com/ports/ jaunty-security main restricted universe multiverse deb-src http://jp.archive.ubuntu.com/ubuntu/ jaunty-security main restricted universe multiverse deb http://jp.archive.ubuntu.com/ports/ jaunty-updates restricted main multiverse universe deb-src http://jp.archive.ubuntu.com/ubuntu/ jaunty-updates restricted main multiverse universe
保存したら以下のものをインストール
sudo apt-get install cmake sudo apt-get install libgtk2.0-dev sudo apt-get install libpng-dev libjpeg-dev sudo apt-get install libavformat-dev libswscale-dev
適当なフォルダを作ってOpenCV2.1のソースをダウンロード
mkdir ~/opencv cd opencv wget http://downloads.sourceforge.net/project/opencvlibrary/opencv-unix/2.1/OpenCV-2.1.0.tar.bz2
ファイルを解凍
tar xvfj OpenCV-2.1.0.tar.bz2
cmake実行
因みにここら辺から一つの処理に結構な時間がかかります。
cd OpenCV-2.1.0 cmake
最後になにもエラーが出なかったら成功です。
ビルドします。
【追記】makeのところにオプションで-j 2を追加
並列処理してくれます。別になくてもいいけど、あったほうが速くなります。
数字は並列数です。自分の環境のプロセッサの数を書きましょう。
数字を忘れると延々とプロセスが増え続けるので気をつけてください。
make -j 2 make install
【追記2】ここでエラーが出る可能性があります。
私の場合、ffmpeg関連のエラーで‘UINT64_C’ was not declared in this scopeと出ました。
最近デスクトップのUbuntuにインストールしようとすると出たため、もしかしたらBeagleBoardインストールでも出るかもしれません。
現在原因究明中ですのでコンパイルが通ったらまた追記します。
↑追記結果判明、OpenCVのバグでした、上記バージョンで行う限りは問題ないと思います
【追記終わり】
この二つはたぶん2時間以上かかるでしょう。
気長に待ちましょう。
全部終わったら完成です。
これでOpenCVをBeagleBoardで使うことが出います。
OpenCVを使ったプログラムをコンパイルするときは
gcc `pkg-config --cflags opencv` `pkg-config --libs opencv` sample.c -o sample
みたいな感じにしましょう。
多分pkg-configされてると思います。
もしできない場合は下のようにしてください。
gcc -I/usr/loca/include/opencv -L/usr/local/lib -lcxcore -lcv -lhighgui -lcvaux -lml sample.c -o sample
以上で説明終わり!
長文駄文でごめんなさい。
一気に書いたらこんなになっちゃった。
そのうち一つ一つ分割して丁寧に記事書きなおそう。
とりあえずはこんなもんで・・・
コメント